Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL - índice de várias colunas


A regra geral para índices é colocar um em qualquer campo usado em um WHERE ou JOIN cláusula.

Dito isto, existem algumas otimizações que você pode fazer. Se você SABE que uma certa combinação de campos é a única que será usada em WHERE em uma tabela específica, então você pode criar uma única chave de vários campos apenas nesses campos, por exemplo
INDEX (field1, field2, field5)

v.s.
INDEX (field1),
INDEX (field2),
INDEX (field5)

Um índice de vários campos pode ser mais eficiente em muitos casos, em vez de varrer vários índices. A desvantagem é que o índice de vários campos só pode ser usado se os campos em questão forem realmente usados ​​em uma cláusula WHERE.

Com suas consultas de exemplo, desde element e field_id estão em todos os três índices, talvez seja melhor dividi-los em seu próprio índice dedicado. Se esses campos forem alteráveis, é melhor mantê-los em seu próprio índice dedicado. por exemplo. se você precisar alterar field_id em massa, o banco de dados precisa atualizar 3 índices diferentes, v.s. atualizando apenas um dedicado.

Mas tudo se resume a benchmarking - teste sua configuração específica com várias configurações de índice e veja qual tem melhor desempenho. Regras práticas são úteis, mas não funcionam 100% do tempo.