2014-07-03 19:12 GMT-03:00 Bruno Silva <[email protected]>:

> 2) o planejador não gosta de between para excluir partições,  tente usar
>> comparações simples com = < >
>
>
>
Uh? Como assim? Pelo menos nas versões mais recentes `foo BETWEEN bar AND
baz` é exatamente equivalente a `foo >= bar AND foo <= baz`. Não vejo como
isso afetaria o particionamento, será que pode ter sido mudado em versões
mais recentes?

Nem do between nem do extract(year from... )
>

Do BETWEEN tudo bem, mas do EXTRACT realmente não vai dar certo. No caso de
particionamento de datas é melhor usar o campo data diretamente e
compará-lo sem passar por funções, a não ser que nas consultas você sempre
utilize a função também, mas ficaria trabalhoso:

    SELECT ... FROM ... WHERE extract(year from dt) = 2014 AND dt =
'2014-07-03 00:00:00';

Num rola né?!

Mas no caso do between ele converteu pra >= e <=
>

Sim, eu não espero nenhuma diferença em termos de performance usando
BETWEEN ou o par >= e <=. Até olhando no gram.y, dá pra ver que é uma
transformação feita direto no parser [1]. Fico imaginando agora se estou
deixando algo bobo passar.

[1]
http://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/parser/gram.y;h=ba7d091dc793c079481a9a0fab05a110c8e98ce7;hb=HEAD#l11054

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a