Evitando erros ao indexar campos timestamp em SQL

Publicado por Evaldo Barbosa em 05/02/2009

[ Hits: 6.732 ]

 


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

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

Instalação do PostgreSQL no CoLinux-Debian

Fazendo backup com PostgreSQL

Novo site sobre PostgreSQL

Instalando PostgreSQL no FreeBSD

  

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