Evitando erros ao indexar campos timestamp em SQL

Publicado por Evaldo Barbosa em 05/02/2009

[ Hits: 6.567 ]

 


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

Tuning PostgreSQL 9.1 com pgtune - Debian e derivados

Configurar Postgresql para conectar com senha criptografada

SQL: Filtragem com WHERE sem problemas com maiúsculo ou minúsculo

Alterando senha inicial do PostgreSQL [Ubuntu]

Ativando acesso remoto ao PostgreSQL 8 no Fedora

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts