Bom dia a todos.
Versão: PostgreSQL 9.3.4 on x86_64-unknown-linux-gnu, compiled by gcc
(Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit
Tenho no sistema uma função que como parâmetro é passado o ano e mês e a
mesma me retorna o primeiro ou último dia do mês.
Quando faço uma busca em uma tabela sem setar a data mas utilizando as
funções o PostgreSQL não utiliza os índices.
Vou postar as duas consultas e o resultado do explain:
select *
from public.stfil021_new a
where
a.movdatmov between '01/07/2014' and '31/07/2014'
Index Scan using stfil021_new_idx1 on stfil021_new a
(cost=0.56..26316.44 rows=13903 width=121)
Index Cond: ((movdatmov >= '2014-07-01'::date) AND (movdatmov <=
'2014-07-31'::date))
select *
from public.stfil021_new a
where
a.movdatmov between functions.sp_data(:ano,:mes,'P') and
functions.sp_data(:ano,:mes,'U')
Seq Scan on stfil021_new a (cost=0.00..21892087.82 rows=4434288 width=121)
Filter: ((movdatmov >= functions.sp_data(2014, 7, 'P'::character
varying)) AND (movdatmov <= functions.sp_data(2014, 7, 'U'::character
varying)))
Como faço para utilizar essas funções e ainda utilizar os índices da
tabela, pois em vários casos teremos como parâmetros o ano e mês e não
as datas.
Obrigado!
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral