Indexação de banco de dados é a forma mais comum conhecida e utilizada por desenvolvedores de back-end para otimizar consultas de banco de dados. Neste artigo, discutiremos detalhadamente sobre indexação de banco de dados. O que é um índice de banco de dados? Um índice de banco de dados permite que uma consulta recupere dados de um banco de dados de maneira eficiente. Em palavras mais simples, a indexação é uma maneira de colocar uma tabela não ordenada em uma ordem que maximize a eficiência ao procurar um registro. Os índices podem estar relacionados a tabelas específicas e consistem em uma ou mais chaves. Além disso, uma tabela pode ter vários índices criados a partir dela. Quando uma tabela de banco de dados não estiver indexada, não haverá uma ordem clara das linhas, portanto, para atender qualquer consulta, ela precisará pesquisar as linhas linearmente, ou seja, a consulta terá que pesquisar cada linha para encontrar as linhas com a condição correspondente. Como você pode imaginar, isso não é o ideal e pode ser um problema ao olhar dentro de uma tabela de banco de dados com grande quantidade de dados. Por exemplo, temos uma tabela conforme abaixo: ID DA EMPRESA UNIDADE CUSTO UNITÁRIO 10 12 1.15 12 12 1.05 14 18 1.31 18 18 1.34 11 24 1.15 16 12 1.31 10 12 1.15 12 24 1.3 18 6 1.34 18 12 1.35 14 12 1,95 21 18 1.36 12 12 1.05 20 6 1.31 18 18 1.34 11 24 1.15 14 24 1.05 E então, queremos executar uma consulta da seguinte forma: SELECT company_id, units, unit_cost FROM index_test WHERE company_id = 18 Nesse caso específico, o banco de dados teria que pesquisar todos os 17 registros na ordem em que aparecem na tabela, de cima para baixo, um de cada vez, para procurar todas as instâncias potenciais de como 18. company_id Isso ficará cada vez mais demorado conforme o tamanho da tabela aumenta. Como a indexação pode ajudar aqui? A indexação pode nos ajudar a configurar a coluna com a condição de pesquisa em ( neste caso) de maneira classificada para otimizar o desempenho da consulta. company_id Com um índice na coluna , a tabela ficaria assim: company_id ID DA EMPRESA UNIDADE CUSTO UNITÁRIO 10 12 1.15 10 12 1.15 11 24 1.15 11 24 1.15 12 12 1.05 12 24 1.3 12 12 1.05 14 18 1.31 14 12 1,95 14 24 1.05 16 12 1.31 18 18 1.34 18 6 1.34 18 12 1.35 18 18 1.34 20 6 1.31 21 18 1.36 Agora, o banco de dados pode simplesmente procurar por igual a 18 e retornar todas as colunas solicitadas para essa linha e, em seguida, passar para a próxima linha. Se a próxima linha também tiver o como 18 novamente, ele também retornará as colunas de solicitação para esta linha, mas se a próxima linha tiver o como 18, o banco de dados saberá que pode interromper a pesquisa aqui e concluir a resposta . company_id company_id company_id Esta foi uma explicação bastante simples sobre o que são índices de banco de dados e o que eles podem fazer, mas há muito mais acontecendo no processo. Vamos dar uma olhada mais profunda em como a indexação funciona. Como funciona a indexação de banco de dados? Na realidade, a tabela do banco de dados não se reordena toda vez que as condições da consulta são alteradas para otimizar o desempenho do banco de dados, mas o que realmente acontece é que o índice faz com que o banco de dados crie uma estrutura de dados separada que deve ser facilmente classificável. É importante observar que quando um índice é criado em uma coluna em um banco de dados, ele cria uma estrutura de dados nessa coluna específica e nenhuma outra coluna é armazenada nessa estrutura de dados. Por exemplo, no exemplo acima, nossa estrutura de dados conterá apenas o e nenhuma outra coluna, como ou . company_id unit unit_cost Mas uma questão legítima surge aqui - como o banco de dados sabe quais outros campos na tabela devem ser retornados para uma consulta. Vamos tentar entender como. Índices de banco de dados armazenam ponteiros para simplesmente referenciar informações para a localização das informações adicionais na memória. Em outras palavras, o índice contém o e o endereço dessa linha específica na memória. Neste exemplo, o índice do banco de dados será mais ou menos assim: company_id ID DA EMPRESA PONTEIRO 10 _123 10 _129 11 _127 11 _138 12 _124 12 _130 12 _135 14 _125 14 _131 14 _133 16 _128 18 _126 18 _131 18 _132 18 _137 20 _136 21 _134 Com esse índice, a consulta pode verificar as linhas da coluna que possuem 18 como valor e, usando o ponteiro, pode encontrar as informações relacionadas a esse registro. company_id Quais estruturas de dados são usadas para indexação? Tendo entendido o que esperamos do índice, vamos dar uma olhada nas estruturas de dados comuns que podem ser usadas para indexação de banco de dados: Árvores B são as estruturas de dados de índice mais usadas porque são rápidas para pesquisas, exclusões e inserções. Todas essas operações são possíveis em tempo logarítmico e os dados contidos em uma árvore B podem ser classificados facilmente. As árvores B Tabelas de hash Índices de hash são comumente usados para descrever índices que utilizam . Como as tabelas de hash são particularmente eficientes na pesquisa de dados, as consultas que procuram uma correspondência exata podem ser processadas rapidamente. A chave em um índice de hash é o valor da coluna e o valor em uma tabela de hash é uma referência aos dados de linha da tabela. tabelas de hash As tabelas hash, por outro lado, não são estruturas de dados ordenadas; portanto, eles podem ser ineficientes para outros tipos de pesquisas. R-TreeName é frequentemente usada em bancos de dados espaciais, geralmente usada para indexar informações multidimensionais, como coordenadas geográficas, retângulos, polígonos etc. A R-tree Índice de bitmap Os são úteis para colunas que possuem um alto número de ocorrências de tais valores, ou seja, colunas com baixa seletividade. Por exemplo, considere uma coluna com valores booleanos. índices de bitmap Quando usar índices Os índices são projetados para aumentar o desempenho do banco de dados; assim, a indexação pode ser usada sempre que precisarmos melhorar significativamente o desempenho do banco de dados. Quanto mais seu banco de dados se expande, mais provável é que a indexação o beneficie. No entanto, a primeira e principal coisa a lembrar é que o índice ocupa espaço extra; portanto, quanto maior a tabela, maior o índice. Toda vez que você executar uma operação de adição, remoção ou atualização, a mesma operação também precisará ser executada no índice. Quando não usar índices Quando os dados são gravados no banco de dados, a tabela original é atualizada primeiro, seguida por outros índices baseados nessa tabela. Quando uma gravação é feita no banco de dados, os índices ficam inoperantes até que sejam atualizados. Os índices nunca serão funcionais se o banco de dados estiver recebendo gravações continuamente. É por isso que os índices costumam ser aplicados a bancos de dados em armazéns de dados que obtêm novos dados de forma planejada (fora do horário de pico), em vez de bancos de dados de produção que podem receber novas gravações o tempo todo. Como criar um índice? O trecho de código a seguir mostra como criar um índice em uma única coluna em um banco de dados SQL: CREATE INDEX name_index ON Employee (Employee_Name); Se você deseja criar um índice em várias colunas, o comando SQL será mais ou menos assim: CREATE INDEX name_index ON Employee (Employee_Name, Employee_Age); Em geral, um índice deve ser construído em uma tabela somente se os dados na coluna indexada forem acessados com frequência. Conclusão Portanto, discutimos a indexação de banco de dados em detalhes neste artigo e também aprendemos sobre as estruturas de dados usadas para implementar a indexação de banco de dados e também quando é aconselhável usar índices e outros. Para resumir tudo, aqui está um rápido resumo: A indexação de banco de dados pode ajudar a reduzir bastante o tempo das consultas. A indexação inclui uma estrutura de dados com colunas para critérios de pesquisa, bem como um ponteiro. O ponteiro é o endereço no disco de memória da linha que contém as informações restantes. Para melhorar o desempenho da consulta, a estrutura de dados do índice (B-Tree, R-Tree, Hash Table ou um Bitmap) é classificada. A consulta pesquisa o índice para a linha especificada; o índice refere-se ao ponteiro que descobrirá o restante das informações. Isso é tudo para este artigo. A indexação de banco de dados é um tópico vasto e um pouco complicado, espero que este artigo seja útil para entender os fundamentos do conceito. Continue lendo!