Como e quando criar um índice em MySQL

Como e quando criar um índice em MySQL
Quando se trata de otimização de desempenho para bancos de dados MySQL, a criação de índices é uma das melhores maneiras. Os índices SQL ajudam a melhorar o desempenho do banco de dados, fornecendo acesso rápido aos dados armazenados no banco de dados.

Um índice SQL não é tão diferente de um índice de livros normal com uma lista com curadoria de informações e onde você pode encontrá -los.

Neste tutorial, discutiremos quando criar um índice SQL porque, embora os índices possam ajudar a otimizar o desempenho, eles também podem causar desempenho lento e outros impactos negativos. Também discutiremos como criar um índice usando um banco de dados real.

Vamos começar:

Quando criar um índice em MySQL?

Infelizmente, não tenho resposta direta para quando você deve criar um índice. No entanto, alguns cenários e fatores podem influenciar a criação de um índice. É bom observar que você pode ter que fazer algumas compensações ao criar um índice

  1. Alta acessibilidade: Se você tiver uma tabela ou coluna acessada regularmente, poderá aumentar seu desempenho criando um índice.
  2. Tamanho: O tamanho dos dados armazenados em uma tabela ou coluna também pode desempenhar um papel na decisão de quando um índice é necessário. Uma tabela grande pode se beneficiar mais de índices do que uma tabela menor.
  3. Chave de índice: O tipo de dados da chave inteira também é um fator. Por exemplo, um número inteiro é uma chave de índice muito melhor devido ao seu tamanho pequeno.
  4. Operações CRUD: Se você tiver uma tabela ou coluna com um número maior de operações de CRUD, a indexação dessa tabela ou coluna pode não ser benéfica e pode impactar negativamente o desempenho do banco de dados.
  5. Tamanho do banco de dados: A indexação é uma estrutura de dados que ocupará espaço no seu banco de dados, que pode ser um fator, especialmente em bancos de dados já grandes.

O exposto acima são alguns dos principais conceitos que podem entrar em jogo ao decidir quando criar um índice de banco de dados.

Se você deseja saber mais sobre como o MySQL usa índices, considere ler o recurso fornecido abaixo:

https: // dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html

Uso básico do MySQL Indexes

Por padrão, depois de criar uma tabela com uma chave primária, o MySQL cria automaticamente um índice especial chamado primário, armazenado com os dados. Isso geralmente é conhecido como um índice em cluster.

Para criar um índice no MySQL, podemos usar a sintaxe mostrada abaixo:

Criar índice index_name em tbl_name (cols);

Começamos chamando a cláusula Create Index, seguida pelo nome do índice que desejamos criar. Em seguida, especificamos a tabela onde o índice reside e, finalmente, as colunas.

Você também pode criar um índice ao criar uma tabela, conforme mostrado na sintaxe abaixo:

Criar tabela tbl_name (col1, col2, col3, índice (col1, col2));

OBSERVAÇÃO: O tipo de índice MySQL padrão é um btree, a menos que explicitamente especificado.

Exemplo de uso de uso

Usando um exemplo, permita -me ilustrar como podemos criar um índice para a tabela específica para aprimorar o desempenho.

Eu estarei usando a tabela de filme no banco de dados dos funcionários. Você pode encontrar o recurso na página de recursos abaixo:

https: // dev.mysql.com/doc/índice-outro.html

Primeiro, vamos ver o processo dos bastidores que o MySQL usa para processar uma instrução selecionada simples, onde o gênero é igual a f.

Explique selecione EMP_NO, First_Name, Last_Name dos funcionários onde sexo gênero = 'f';

Dado o tamanho da tabela e os dados consultados, a varredura de mais de 200.000 linhas não é muito eficiente. Nesse caso, podemos reduzir esse valor criando um índice.

Para criar um índice, podemos fazer:

Criar gênero de índice para funcionários (gênero);

Depois de criar o índice, o MySQL verá os valores, como mostrado na saída acima.

Conclusão

Espero que este tutorial tenha dado a você uma compreensão mais profunda do uso de índices MySQL para aprimorar o desempenho do banco de dados.

Obrigado pela leitura.