O QUE É ÍNDICE DE BANCO DE DADOS: Como funciona e o que faz?

índice de banco de dados SQL a importância de um índice de banco de dados tipos índices

A indexação do banco de dados SQL é o processo de categorizar e organizar registros de dados. Qualquer pessoa que trabalhe com um banco de dados apreciaria a economia de tempo que esse recurso oferece ao procurar dados específicos. Neste artigo, exploramos a definição de um índice de banco de dados SQL, os tipos e a importância de um índice de banco de dados. Aproveite o passeio!

O que é índice de banco de dados?

Índices de banco de dados são estruturas de dados que facilitam pesquisas de tabela mais rápidas. O banco de dados ainda funcionará sem índices, mas pode demorar mais para que as consultas retornem os resultados. Cada índice contém uma chave composta por dados de uma ou mais colunas em sua tabela correspondente. O banco de dados pode optar por utilizar um índice para acelerar a recuperação de registros quando uma consulta requer acesso a uma tabela com um índice.

Quando um usuário insere uma consulta, a consulta normalmente faz uma pesquisa linear em cada linha, verificando se alguma delas contém as informações desejadas. Isso é simplificado com o uso de um índice, que aumenta a produtividade porque diminui o tempo de conclusão das tarefas.

Tipos de índices de banco de dados

Existem diferentes tipos de índices de banco de dados. Aqui estão os tipos de índices de banco de dados:

#1. Índice Primário em DBMS

O índice primário do banco de dados é um arquivo de comprimento fixo, ordenado e de dois campos. O primeiro campo funciona como uma chave primária e o segundo campo indica qual bloco de dados contém as informações especificadas. Há sempre uma correspondência um-para-um entre as entradas de índice do banco de dados principal. Existem duas variedades distintas de indexação principal usadas no DBMS.

  • Índice Denso
  • Índice Esparso

#2. Índice Secundário em DBMS

Uma chave candidata em um sistema de gerenciamento de banco de dados (DBMS) é um campo que possui um valor exclusivo para cada entrada. É um tipo de índice que não agrupa dados em clusters. Esse método de indexação de um banco de dados em dois níveis é usado para minimizar o tamanho do nível de mapeamento inicial. Por causa disso, uma ampla gama de números inteiros é escolhida para o estágio inicial, enquanto o próprio tamanho do mapeamento permanece fixo e modesto.

O que a indexação faz?

Colocar uma tabela não classificada em uma ordem que melhora a eficiência da pesquisa por meio de consultas é realizado pela indexação. Tabelas não indexadas requerem uma pesquisa linear nas linhas porque a consulta não pode saber a ordem das linhas e se otimizar de acordo. Ou seja, as consultas precisarão percorrer cada linha para encontrar aquelas que atendem aos critérios. Isso pode, como você pode esperar, levar algum tempo. 

Como funciona o índice de banco de dados?

Não é prático esperar que a tabela do banco de dados se reorganize sempre que as circunstâncias da consulta mudarem para melhorar o desempenho da consulta. Na verdade, o que acontece é que o banco de dados constrói um estrutura de dados em resposta ao índice. Uma B-Tree é provavelmente o tipo de estrutura de dados que está sendo usado. O B-Tree tem vários benefícios, mas o fato de poder ser facilmente classificado é o mais importante para nossas necessidades. Por causa do mencionado acima, não deve ser surpresa que uma estrutura de dados classificada melhore a eficácia de nossa pesquisa.

Observe que, quando o índice do banco de dados cria uma estrutura para uma determinada coluna, ele armazena apenas informações sobre essa coluna; nenhuma outra coluna está incluída. 

Você também pode ler:

Dicas para criar um índice de banco de dados

A seguir estão as dicas para criar um índice de banco de dados:

#1. Índice de acordo com a carga de trabalho

Um índice de banco de dados eficiente pode ser criado em resposta ao volume de dados que está sendo processado. Em vez de basear o processo de criação do índice no número de tabelas que você possui (o que pode dificultar o acesso), concentre-se em criar um índice de banco de dados que facilite a pesquisa de determinados termos.

#2. Você deve fazer uso de predicados

Criar um índice de banco de dados com predicados é outra opção viável. Um predicado é um tipo de expressão de condição usada para determinar o valor de verdade de uma declaração. Além de simplificar o desenvolvimento de um índice de banco de dados, isso ajuda o usuário a fazer escolhas informadas sobre quais dados recuperar.

Para encontrar as ferramentas e suprimentos necessários para um projeto de construção, um banco de dados projetado para esse setor pode usar predicados em seu índice. Um funcionário pode utilizá-lo para verificar se os mesmos materiais foram ou não empregados em um projeto semelhante alguns meses antes.

Um índice adaptado às consultas SQL de índice de banco de dados mais populares também é comumente construído para eficiência ideal. Incluído nisso pode estar um resumo de todas as possíveis consultas SQL de índice de banco de dados e sua frequência estimada de uso, com as mais cruciais destacadas.

Isso pode ser útil quando uma escola precisa realizar uma pesquisa padrão no banco de dados, como descobrir quais crianças foram mais chamadas em casa ou que estiveram ausentes por um longo período de tempo devido a doenças. Isso é útil em caso de emergência, pois facilita a recuperação rápida e fácil das informações de contato dos pais.

#4. Evite a necessidade de classificação fazendo um índice

Criar um índice que não exija classificação pode acelerar a capacidade de uma consulta de recuperar os dados desejados. Um usuário de banco de dados geralmente pode classificar manualmente os registros usando as cláusulas 'Group by' e 'Order by'. Você pode otimizar a velocidade do banco de dados criando um índice nas colunas usadas por esses dois tipos. Como nenhuma classificação de registros é necessária, as consultas podem ser otimizadas ainda mais.

#5. Crie índices únicos

Os funcionários geralmente recebem a tarefa de criar vários índices exclusivos ao desenvolver um banco de dados eficaz. Isso é crucial porque evita a corrupção de dados, eliminando a possibilidade de duplicatas nas colunas de uma tabela. As restrições, ou as regras que os dados em uma tabela sempre devem seguir, são usadas pela grande maioria dos sistemas de banco de dados para gerar índices exclusivos. Uma chave primária também é empregada para facilitar a identificação dos dados dentro de uma tabela.

#6. Considere chaves estrangeiras

Um funcionário pode otimizar o desempenho do banco de dados criando índices relacionados a cada chave estrangeira usada pelo banco de dados. Chaves estrangeiras são um grupo de colunas em um banco de dados que fornecem acesso a tabelas em outro banco de dados. Esses índices não são necessários na maioria dos sistemas de banco de dados, mas podem aumentar a produtividade de qualquer maneira. O banco de dados pode não conter todas as informações que um funcionário precisa, mas essa chave pode levá-lo ao resultado adequado em outro banco de dados.

#7. Inserir colunas exclusivamente para uso de índice de banco de dados

Um funcionário pode achar útil adicionar várias colunas somente de índice de banco de dados ao seu banco de dados em determinadas circunstâncias. Um trabalhador agora pode recuperar rapidamente informações somente de índice. Isso ocorre para que todas as consultas inseridas pelo usuário precisem pesquisar apenas nessas colunas de índice recém-adicionadas. Isso agiliza o processo de fornecer os dados específicos de que um funcionário precisa. Mas deve-se observar que o trabalhador agora deve verificar as outras consultas para ver se as novas colunas afetarão sua capacidade de realizar seus trabalhos.

#8. Evite um limite no número de índices

Recomenda-se que o número de índices em um banco de dados não seja restrito ao ser criado. Para otimizar adequadamente um banco de dados, é preferível ter o maior número possível de índices, pois cada índice atua como um otimizador que acelera o processo de recuperação de dados. Vale a pena notar que isso não é útil apenas para a pessoa em questão; na maioria dos locais de trabalho, os bancos de dados e as informações neles contidas são compartilhados com os funcionários. Isso significa que tem o potencial de aumentar a produção em toda a organização.

#9. Verifique se há muitas implicações de modificação de dados

Para economizar tempo, um trabalhador pode preferir ignorar a inserção de dados manualmente. Eles podem conseguir isso refletindo sobre os resultados de quaisquer alterações feitas nos dados. Existem algumas opções para realizar isso. Um funcionário, por exemplo, pode consultar os índices da tabela. Há uma boa possibilidade de que adicionar outro índice de banco de dados não afete significativamente o desempenho se já houver mais índices do que colunas. Um funcionário também pode verificar o tempo de execução de uma consulta executando-a na tabela. O valor de criar um índice de banco de dados depende de quanto tempo leva para executar a consulta.

Se um trabalhador precisar adicionar ou remover dados para gerar seus próprios índices, poderá fazê-lo após considerar o impacto no restante do banco de dados. Seria uma tolice, por exemplo, livrar-se de números de telefone que conectam a empresa a um funcionário específico se o banco de dados estiver repleto de detalhes de contato de fornecedores.

Como um índice de banco de dados funciona internamente

Índice de banco de dados SQL é estruturado internamente como árvores. Os índices do banco de dados são representados graficamente como árvores, com registros individuais substituindo as folhas. Vários nós conectados por ponteiros compõem a estrutura da árvore de índices de um banco de dados.

Quando o comando CREATE INDEX é executado, uma árvore de índice é gerada. Um algoritmo no programa de banco de dados é responsável por criar a árvore de índice. O procedimento de construção do índice começa com uma etapa para classificar os registros pela chave do índice. Uma vez criados todos os nós no índice da árvore, a estrutura é construída sobre eles. Quando há muitos registros em um banco de dados, a criação de uma árvore de índice pode ser demorada.

Para encontrar uma linha específica na tabela, devemos começar nossa pesquisa de índice no nó folha. A cada bifurcação da estrada, deve-se escolher o caminho a seguir. Isso requer uma análise aprofundada dos critérios de pesquisa e dos valores que se enquadram em cada bifurcação. Considere o caso de procurar o número 12 em uma árvore de dois ramos como uma ilustração muito básica. Os dígitos de 0 a 10 estão localizados na Filial X, enquanto os de 11 a 20 estão localizados na Filial Y. Como 12 é maior que 11, você deve procurar lá.

A árvore B é um exemplo de árvore de índice especializada. Árvores balanceadas, ou B-trees, têm o mesmo número de nós desde a raiz até cada nó folha.

Como um índice de banco de dados funciona sob o capô

Um índice é apenas uma estrutura de dados que fornece acesso fácil a informações relevantes, armazenando referências a itens individuais. Na ausência de um índice, as linhas de dados em um banco de dados geralmente são mantidas em uma “pilha” desorganizada. O Microsoft SQL Server e o Banco de Dados SQL do Azure têm uma opção que você pode usar para habilitar ou desabilitar esse recurso.

Na realidade, os dados raramente são mantidos em um estado totalmente não estruturado. As chaves primárias, que no MySQL podem ser iguais aos índices, são normalmente usadas; eles podem assumir a forma de um inteiro de incremento automático. A eficiência “binária” da classificação (com valores exclusivos) é restrita a uma consulta que filtra na coluna ordenada, no entanto, porque apenas uma coluna pode ser usada para classificar os dados. Uma tabela com um índice pode ser pesquisada com eficiência usando pesquisa binária, pois pode ser classificada por muitas colunas.

Ao indexar uma coluna, você realmente cria uma nova tabela com duas colunas: a coluna indexada e um ponteiro para o local do item que está procurando. O índice terá o mesmo comprimento da tabela original, mas sua largura será significativamente menor, exigindo menos blocos de disco para armazenar e percorrer. No MySQL, os ponteiros tendem a ter menos de 5 bytes de tamanho. Para os interessados ​​em mergulhar mais fundo, a postagem “lendária” do Stack Overflow mencionada acima explica a aritmética por trás do número necessário de blocos para armazenamento.

A menos que você os tenha construído do zero, seu banco de dados atual provavelmente possui vários índices.

Importância de um índice de banco de dados

A importância de um índice de banco de dados nunca pode ser negligenciada, mas eles incorrem em custos na forma de gravações extras e na necessidade de espaço de armazenamento extra para manter a cópia duplicada dos dados atualizada. Outra importância de um índice de banco de dados é que eles exigem manutenção regular para garantir o desempenho ideal. No entanto, os benefícios de empregar índices superam em muito a pequena inconveniência de sua manutenção. Os índices precisam de manutenção regular para funcionar corretamente. Reconstruções de índice, reorganizações e verificações de fragmentação se enquadram nessa categoria de tarefas.

O custo de ter índices

Como a maioria das outras coisas na vida, os índices custam dinheiro. Todos os índices em uma tabela devem ser renovados se qualquer uma das linhas dessa tabela for alterada (através de INSERT, UPDATE ou DELETE). Essas modificações custam tempo e, quando existem vários índices em um banco de dados, o desempenho de um processo que edita tabelas extensivamente pode ser prejudicado.

Devemos pesar os benefícios em relação aos custos de construção de um índice antes de prosseguir. Podemos antecipar um aumento perceptível na eficiência? Esta é uma tabela estatística ou foi amplamente manipulada? Podemos viver com uma queda no desempenho enquanto ajustamos a mesa? Os resultados desse exame nos dirão se o índice precisa ou não ser feito. Alguns bancos de dados ainda têm a capacidade de construir e eliminar índices automaticamente, conforme necessário.

Coisas para não esquecer sobre o índice de banco de dados

A seguir estão coisas para não esquecer sobre o índice do banco de dados:

  • A indexação envolve a adição de uma estrutura de dados com colunas de critérios de pesquisa e um ponteiro.
  • O ponteiro é a localização do disco de memória da linha que contém os dados restantes.
  • Classificar a estrutura de dados do índice melhora o desempenho da consulta.
  • Uma consulta localiza a linha desejada no índice; uma vez localizado, o índice fornece uma referência ao restante dos dados.
  • Com o índice, a consulta só precisa examinar quatro linhas em vez de dezessete.

O que é um índice para leigos?

Um índice é um valor numérico usado como um medidor. É um termo usado para descrever uma análise quantitativa do movimento de um mercado de valores mobiliários. Os índices do mercado de ações e os índices do mercado de títulos nos mercados financeiros consistem, cada um, em uma carteira fictícia de títulos destinada a representar todo o mercado ou um subconjunto dele.

Qual é o propósito da indexação?

A indexação é uma ferramenta estatística para monitorar indicadores econômicos como inflação, desemprego, crescimento do PIB, produtividade e retornos do mercado de ações.

Considerações Finais

Um índice é muito mais eficiente do que ter funcionários constantemente reorganizando o banco de dados em resposta a novas consultas. O índice, por outro lado, gera sua própria hierarquia interna de banco de dados. Um índice de banco de dados pode empregar uma estrutura B-Tree, por exemplo. Além disso, os nós com duas ou mais ramificações são suportados, portanto, os trabalhadores podem expandir além de simples pesquisas binárias.

Referências

Deixe um comentário

O seu endereço de e-mail não será publicado. Os campos obrigatórios são marcados com *

Você pode gostar