Evitando erros ao indexar campos timestamp em SQL

Publicado por Evaldo Barbosa em 05/02/2009

[ Hits: 6.734 ]

 


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

Solucionando erro de ArrayIterator que não recebe array

Selecionando todos os checkboxes a partir de um principal com JavaScript

Leitura recomendada

Autovacuum do PostgreSQL

Tradução da documentação da PL/PHP para PostgreSQL

Configurar Postgresql para conectar com senha criptografada

Acesso externo no PostgreSQL 8.4

Dicas e macetes sobre modelagem de bancos de dados

  

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