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

MySQL:Diferença entre `... ADD INDEX(a); ... ADD INDEX(b);` e `... ADD INDEX(a,b);`?


O INDEX combinado é uma combinação das teclas "a" e "b". Ele melhora o acesso significativamente se "a" ou "a" E "b" fizerem parte da expressão de pesquisa.

Esse índice não é útil se você fornecer apenas "b" em suas instruções SQL.

Portanto, pode ser útil fornecer dois índices diferentes - mas eles devem usar nomes diferentes.

Dependendo dos padrões de acesso, eu recomendaria um índice em "a" e "b" e um índice adicional em "b" se isso corresponder às suas necessidades.

Lembre-se de que qualquer índice adicional torna o banco de dados lento em todas as operações que modificam dados. Algumas vezes é melhor manter alguns índices afastados. Normalmente é um bom conselho NÃO USAR índices em nenhuma coluna de uma tabela.

Mais uma dica:para decidir se um INDEX(a,b) ou INDEX(b,a) deve ser usado, dê uma olhada na distribuição de seus dados. Coloque os valores com a maior dispersão de valores diferentes na primeira coluna do índice para aumentar a seletividade desse índice. Esse valor normalmente é baseado na qualidade do primeiro elemento de índice.

Por exemplo, um índice nas colunas NAME e SEX deve ser criado como INDEX(NAME, SEX) porque há muito mais nomes que diferentes sexo(s ?).