sequencial scans

Started by Vilson fariasalmost 25 years ago2 messagesgeneral
Jump to latest
#1Vilson farias
vilson.farias@digitro.com.br

Greetings,

With short words (time is money and my english is very bad), why sequencial scans in the example below ?

persona=# CREATE TABLE teste_erro(
persona(# cod integer,
persona(# CONSTRAINT XPKteste_erro PRIMARY KEY(cod));
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'xpkteste_erro' for table 'teste_erro'
CREATE

persona=# CREATE FUNCTION teste_proc(VARCHAR, VARCHAR) RETURNS integer AS '
persona'# DECLARE
persona'# numeroa ALIAS for $1;
persona'# dddlocal ALIAS for $2;
persona'# BEGIN
persona'# RETURN 666;
persona'# END;
persona'# ' LANGUAGE 'plpgsql';
CREATE

persona=# explain select * from teste_erro where cod = teste_proc('3138414411','19');
NOTICE: QUERY PLAN:
Seq Scan on teste_erro (cost=0.00..25.00 rows=10 width=4)
EXPLAIN

persona=#explain select * from teste_erro where cod = 313;
NOTICE: QUERY PLAN:
Index Scan using xpkteste_erro on teste_erro (cost=0.00..8.14 rows=10 width=4)
EXPLAIN

Regards,

Jos� Vilson de Mello de Farias
D�gitro Tecnologia Ltda - Brazil

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Vilson farias (#1)
Re: sequencial scans

"Vilson farias" <vilson.farias@digitro.com.br> writes:

persona=# explain select * from teste_erro where cod = teste_proc('3138414411','19');
NOTICE: QUERY PLAN:
Seq Scan on teste_erro (cost=0.00..25.00 rows=10 width=4)
EXPLAIN

You need to mark the function cachable, else the planner doesn't
believe it's a constant. See "iscachable" in the CREATE FUNCTION
reference page.

regards, tom lane