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
.
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? |