Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Indexação por Hash | Otimização de Consultas.Índices
Técnicas Avançadas em SQL

bookIndexação por Hash

Em determinadas situações, é necessário um índice para buscar informações de forma eficiente, mas utilizar um índice B-tree pode ser excessivamente complexo e redundante. Nesses casos, um índice hash pode ser uma alternativa mais adequada.

Um índice hash é um tipo de índice de banco de dados que utiliza uma função hash para mapear valores indexados para localizações em uma tabela hash.
Nesse tipo de índice, os valores da coluna alvo são hasheados, ou seja, transformados em um valor de tamanho fixo ou código hash, que é então utilizado como índice para recuperar as linhas de dados.

Como funciona?

Em um índice hash, o processo de hashing envolve transformar um valor de chave de índice em um código hash utilizando uma função hash. Esse código hash é então utilizado para determinar a localização, ou bucket, onde os dados correspondentes são armazenados no índice.

Você pode encontrar mais informações sobre hashing no curso Visão Geral de Algoritmos e Estruturas de Dados.

Vamos considerar um índice hash para um sistema de catálogo de biblioteca onde cada título de livro é indexado pelo seu ISBN (International Standard Book Number).

Neste exemplo, utilizamos uma função hash para converter o ISBN de um livro em um código hash hexadecimal, como 0x7FA4, utilizando uma série de operações matemáticas sobre os dígitos do ISBN.
Esse código hash serve como um identificador único, determinando o slot dentro da tabela hash onde há um link para a linha correspondente na tabela, contendo todas as informações sobre aquele livro em particular.

Características principais

  1. Busca rápida: Índices hash proporcionam buscas rápidas para comparações de igualdade. Ao buscar um valor específico, o PostgreSQL calcula o hash do valor e acessa diretamente a localização correspondente no índice, tornando a recuperação muito eficiente;

  2. Suporte limitado a operadores: Diferente dos índices B-tree, índices hash suportam apenas comparações de igualdade (=), não consultas por intervalo (<, >, <=, >=) ou ordenação. Essa limitação torna os índices hash menos versáteis em comparação aos índices B-tree;

  3. Mais rápido para alguns casos de uso: Em cenários onde a carga de trabalho envolve um grande volume de buscas por igualdade, como imposição de chave primária ou restrição de unicidade, índices hash podem superar índices B-tree. No entanto, sua vantagem de desempenho diminui para consultas por intervalo ou dados que não se adaptam bem ao algoritmo de hash.

Implementação

Podemos implementar um índice hash em SQL usando a seguinte instrução:

CREATE INDEX hash_index_name ON table_name USING HASH (column_name1, column_name2,... );

Como resultado, os valores de column_name1, column_name2,... serão transformados em hash e a tabela hash será criada. Isso permitirá uma recuperação mais rápida das linhas de dados necessárias.

question mark

Que tipo de consulta se beneficia mais do uso de um índice hash?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 4.35

bookIndexação por Hash

Deslize para mostrar o menu

Em determinadas situações, é necessário um índice para buscar informações de forma eficiente, mas utilizar um índice B-tree pode ser excessivamente complexo e redundante. Nesses casos, um índice hash pode ser uma alternativa mais adequada.

Um índice hash é um tipo de índice de banco de dados que utiliza uma função hash para mapear valores indexados para localizações em uma tabela hash.
Nesse tipo de índice, os valores da coluna alvo são hasheados, ou seja, transformados em um valor de tamanho fixo ou código hash, que é então utilizado como índice para recuperar as linhas de dados.

Como funciona?

Em um índice hash, o processo de hashing envolve transformar um valor de chave de índice em um código hash utilizando uma função hash. Esse código hash é então utilizado para determinar a localização, ou bucket, onde os dados correspondentes são armazenados no índice.

Você pode encontrar mais informações sobre hashing no curso Visão Geral de Algoritmos e Estruturas de Dados.

Vamos considerar um índice hash para um sistema de catálogo de biblioteca onde cada título de livro é indexado pelo seu ISBN (International Standard Book Number).

Neste exemplo, utilizamos uma função hash para converter o ISBN de um livro em um código hash hexadecimal, como 0x7FA4, utilizando uma série de operações matemáticas sobre os dígitos do ISBN.
Esse código hash serve como um identificador único, determinando o slot dentro da tabela hash onde há um link para a linha correspondente na tabela, contendo todas as informações sobre aquele livro em particular.

Características principais

  1. Busca rápida: Índices hash proporcionam buscas rápidas para comparações de igualdade. Ao buscar um valor específico, o PostgreSQL calcula o hash do valor e acessa diretamente a localização correspondente no índice, tornando a recuperação muito eficiente;

  2. Suporte limitado a operadores: Diferente dos índices B-tree, índices hash suportam apenas comparações de igualdade (=), não consultas por intervalo (<, >, <=, >=) ou ordenação. Essa limitação torna os índices hash menos versáteis em comparação aos índices B-tree;

  3. Mais rápido para alguns casos de uso: Em cenários onde a carga de trabalho envolve um grande volume de buscas por igualdade, como imposição de chave primária ou restrição de unicidade, índices hash podem superar índices B-tree. No entanto, sua vantagem de desempenho diminui para consultas por intervalo ou dados que não se adaptam bem ao algoritmo de hash.

Implementação

Podemos implementar um índice hash em SQL usando a seguinte instrução:

CREATE INDEX hash_index_name ON table_name USING HASH (column_name1, column_name2,... );

Como resultado, os valores de column_name1, column_name2,... serão transformados em hash e a tabela hash será criada. Isso permitirá uma recuperação mais rápida das linhas de dados necessárias.

question mark

Que tipo de consulta se beneficia mais do uso de um índice hash?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 4
some-alt