Pular para o conteúdo

Evitando erros ao indexar campos timestamp em SQL

Dica publicada em Banco de Dados / Postgres
Evaldo Barbosa evaldobarbosa
Hits: 7.355 Categoria: Banco de Dados Subcategoria: Postgres
  • Indicar
  • Impressora
  • Denunciar

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.

Solucionando erro de ArrayIterator que não recebe array

Selecionando todos os checkboxes a partir de um principal com JavaScript

SQL - Copiar coluna

PostgreSQL 9.1 64 bits - Instalação no Debian Squeeze

Instalação do PostgreSQL no CoLinux-Debian

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

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

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.