Evitando erros ao indexar campos timestamp em SQL

Publicado por Evaldo Barbosa em 05/02/2009

[ Hits: 6.580 ]

 


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

Select com extração de dia, mês ou ano no PostgreSQL

Instalação e configuração do PostgreSQL no Slackware

Instalação do PostgreSQL no CoLinux-Debian

Instalação e configuração do PostgreSQL e phpPgAdmin no Debian

Autovacuum do PostgreSQL

  

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