Re: Query is fast and function is slow
От | Thomas Pundt |
---|---|
Тема | Re: Query is fast and function is slow |
Дата | |
Msg-id | 200612071053.01287.mlists@rp-online.de обсуждение исходный текст |
Ответ на | Query is fast and function is slow (Richard Ray <rray@mstc.state.ms.us>) |
Ответы |
Re: Query is fast and function is slow
|
Список | pgsql-sql |
Hi, On Wednesday 06 December 2006 16:44, Richard Ray wrote: | select count(*) from documents where doc_num = '106973821' and (select | bit_or(group_access) from mda_groups where group_name in (select groname | from pg_user,pg_group where usename = 'bbob' and usesysid = any(grolist) | and (groname ~ '.*owner$' or groname = 'admin'))) & access > | '0'::bit(100); | | returns very fast | | If I create function | | create or replace function check_for_update_permission(text,text) returns | boolean as ' | declare | doc_number alias for $1; | user alias for $2; | doc_count integer; | begin ... | end; | ' language 'plpgsql'; | | | and run "select check_for_update_permission('106973821','bbob');" | it returns the correct info but takes several minutes | Would someone please enlighten me. | Can you do something like explain analyze on a function Just a guess: is the column "doc_num" really of type text? Maybe using "text" in the function lets the planner choose a sequential scan? I'd try putting a "raise notice '%', explain analyze ..." statement into the function and check the log file. Ciao, Thomas -- Thomas Pundt <thomas.pundt@rp-online.de> ---- http://rp-online.de/ ----
В списке pgsql-sql по дате отправления: