Pular para o conteúdo principal
Documentos
Sintaxe básicaFunções JSONAcionadoresGerenciamento de tabelas e esquemasFunções de cadeia de caracteresFunções matemáticasFunções de dataBancos de dadosÍndices

Índices Hash do PostgreSQL

Os índices no PostgreSQL são objetos de banco de dados que melhoram a velocidade das operações de recuperação de dados em uma tabela do banco de dados. Os índices hash são usados para localizar rapidamente as linhas em uma tabela com base em comparações de igualdade.

Uso

Os índices de hash são particularmente úteis quando as consultas envolvem condições de igualdade, como `=`. Eles não são adequados para consultas de intervalo e são criados usando a instrução `CREATE INDEX` com a opção `USING HASH`.

sql
CREATE INDEX index_name
ON table_name USING HASH (column_name);

Nessa sintaxe, `USING HASH` especifica o tipo de índice a ser criado em `column_name` de `table_name`.

Exemplos

1. Criação básica de índice hash

sql
CREATE INDEX customer_id_hash
ON customers USING HASH (customer_id);

Isso cria um índice de hash na coluna `customer_id` da tabela `customers`, melhorando o desempenho da pesquisa de igualdade em `customer_id`.

2. Índice Hash em várias colunas

sql
CREATE INDEX employee_name_hash
ON employees USING HASH ((first_name || last_name));

Este exemplo cria um índice hash na concatenação das colunas `first_name` e `last_name` na tabela `employees`, útil para pesquisas de igualdade no nome completo.

3. Índice de hash condicional

sql
CREATE INDEX active_customer_hash
ON customers USING HASH (customer_id)
WHERE status = 'active';

Um índice hash parcial é criado para `customer_id` na tabela `customers`, mas somente para as linhas em que `status` é `active`, otimizando as consultas que filtram essa condição.

Dicas e práticas recomendadas

  • Use para pesquisas de igualdade. Os índices de hash são ideais para operações `=`, mas não para consultas de intervalo.
  • Combine com restrições. Emparelhe os índices hash com restrições exclusivas quando aplicável para garantir a integridade dos dados.
  • Considere alternativas. Avalie se um índice de árvore B pode ser mais adequado, pois ele suporta uma variedade maior de tipos de consulta e é o tipo de índice padrão no PostgreSQL.
  • Monitore o desempenho. Analise e monitore regularmente o uso do índice para garantir que ele esteja proporcionando benefícios de desempenho. Use ferramentas como `pg_stat_user_indexes` para ajudar a avaliar o desempenho do índice.
  • Esteja ciente das preocupações com a durabilidade. Os índices de hash não são registrados no WAL, o que afeta a durabilidade e os recursos de recuperação. Isso pode ser uma consideração crítica em sistemas em que a durabilidade dos dados é vital.
  • Planeje a manutenção. Os índices de hash podem não ser reconstruídos automaticamente durante as atualizações do PostgreSQL, o que pode levar à perda de funcionalidade se não forem gerenciados corretamente. Pode ser necessário reindexar periodicamente para manter o desempenho.
  • Conheça as limitações. Os índices Hash são menos usados em comparação com os índices B-tree devido ao seu caso de uso específico para pesquisas de igualdade e à falta de suporte para consultas de intervalo. Considere as necessidades específicas de sua aplicação ao escolher o tipo de índice.