Evitando erros ao indexar campos timestamp em SQL

Publicado por Evaldo Barbosa em 05/02/2009

[ Hits: 6.001 ]

 


Evitando erros ao indexar campos timestamp em SQL



Eu tive um grande problema com um campo "timestamp" e que consiste no seguinte: uma função que criei fazia uma busca em várias tabelas e usava como restrição algo como:

to_char(campo_tmp)::date = CURRENT_DATE

E isso me trazia um prejuízo muito grande, pois a consulta durava entre 900ms e 1.400ms.

A dica é a seguinte: ao fazer buscas, principalmente se for um "count(*)" em campos timestamp, veja se são extremamente necessárias, pois se precisar indexá-las terá problemas, já que indexação com funções "to_char" ou "date_trunc" - que necessitam de dados externos como locale - não funcionam. Essas indexações devem ser feitas com dados imutáveis.

A melhor coisa a fazer é separar data e hora em campos diferentes que indexá-los um a um. Assim você evita problemas e ganha muitíssimo em desempenho.

O resultado pra mim foi uma redução de quase 1.400ms para 0.32ms.

Outras dicas deste autor

Selecionando todos os checkboxes a partir de um principal com JavaScript

Solucionando erro de ArrayIterator que não recebe array

Leitura recomendada

PostgreSQL - Alterando senha do usuário postgres

PostgreSQL: Fazendo backup de um servidor inteiro

Lidando com nulos (NULL) em SQL

PostgreSQL no Fedora 18

Ativando acesso remoto ao PostgreSQL 8 no Fedora

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário