Does SETOF make queries slower?

From: "Eduardo Naschenweng" <eduardo(dot)naschenweng(at)digitro(dot)com(dot)br>
To: <pgsql-admin(at)postgresql(dot)org>
Subject: Does SETOF make queries slower?
Date: 2004-04-01 17:43:35
Message-ID: 406C54C7.000001.00680@dgtat
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin


Greetings,

It seems that stored procedures that use SETOF are slower than regular sql
commands. Why does it happens?

Please check out the following example.

bxs=# \d cham_chamada
Table "public.cham_chamada"
Column | Type | Modifiers
-------------------+--------------------------------+-----------
dt_inicial | timestamp(0) without time zone | not null
cod_bxs | integer | not null
chave | integer | not null
identificacao | integer | not null
identidadea | character varying(25)
....
Indexes: xpkcham_chamada primary key btree (dt_inicial, cod_bxs, chave,
identificacao),

bxs=# SELECT COUNT(*) FROM cham_chamada;
count
--------
392858
(1 row)

CREATE TYPE rec_teste AS (dt_inicial timestamp(0), identidadea varchar(25));

CREATE OR REPLACE FUNCTION teste() RETURNS SETOF rec_teste AS'
SELECT dt_inicial, identidadea
FROM cham_chamada cc;'
LANGUAGE SQL;

bxs=# EXPLAIN ANALYZE SELECT dt_inicial, identidadea FROM cham_chamada cc;
QUERY PLAN
----------------------------------------------------------------------------
---------------------------------------------------------
Seq Scan on cham_chamada cc (cost=100000000.00..100011071.72 rows=358772
width=18) (actual time=0.29..2887.40 rows=392631 loops=1)
Total runtime: 3092.28 msec
(2 rows)

bxs=# EXPLAIN ANALYZE SELECT * FROM teste();
QUERY PLAN
----------------------------------------------------------------------------
----------------------------------------
Function Scan on teste (cost=0.00..12.50 rows=1000 width=37) (actual
time=17527.53..18326.71 rows=392631 loops=1)
Total runtime: 18595.13 msec
(2 rows)

For the same sql script, execution time is almost 20sec. Compared with
execution time of regular sql script, there is a huge difference. I already
tested with other complexity levels (left joins, indexed and sequencial scan
queries etc) and some times I got 100 times slower when executing inside
stored procedure. Could you give me some light?

Thanks in advance.

José Vilson de Mello de Farias
Analista de Sistemas - APC

DÍGITRO TECNOLOGIA
E-mail: vilson(dot)farias(at)digitro(dot)com(dot)br
Fone: (0xx48) 281-7158
Fax: (0xx48) 281-7000
Site: www.digitro.com.br
.

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message Bradley Kieser 2004-04-01 18:53:07 Re: Do Petabyte storage solutions exist?
Previous Message Tony Reina 2004-04-01 17:41:46 Do Petabyte storage solutions exist?