pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Thomas Pundt <mlists@rp-online.de>
To: pgsql-sql@postgresql.org
Cc: Richard Ray <rray@mstc.state.ms.us>
Subject: Re: Query is fast and function is slow
Date: Thu, 7 Dec 2006 10:53:01 +0100
Message-ID: <200612071053.01287.mlists@rp-online.de> (raw)
In-Reply-To: <Pine.LNX.4.64.0612060934410.15200@rray.drdc.mstc.ms.gov>
References: <Pine.LNX.4.64.0612060934410.15200@rray.drdc.mstc.ms.gov>

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/ ----



view thread (7+ messages)  latest in thread

Message-ID: <200612071053.01287.mlists@rp-online.de>
Permalink:  ../200612071053.01287.mlists@rp-online.de/
Also on:    postgresql.org/message-id/200612071053.01287.mlists@rp-online.de

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: mlists@rp-online.de, rray@mstc.state.ms.us
  Subject: Re: Query is fast and function is slow
  In-Reply-To: <200612071053.01287.mlists@rp-online.de>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox