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

Índices e chaves primárias de várias colunas


Não estou intimamente familiarizado com a parte interna dos índices no mySql, mas nos dois produtos de fornecedores de banco de dados com os quais estou familiarizado (MsSQL, Oracle) os índices são estruturas de árvore balanceada, cujos nós são organizados como uma tupla sequenciada das colunas que o o índice é definido em (Na Sequência Definida )

Portanto, a menos que o mySql faça isso de maneira muito diferente (provavelmente não), qualquer índice composto (em mais de uma coluna) pode ser utilizável por qualquer consulta que precise filtrar ou classificar por um subconjunto das colunas no índice, desde que a lista de colunas seja compatível, ou seja, se as colunas, quando sequenciadas da mesma forma que a lista sequenciada de colunas no índice completo, for um subconjunto ordenado do conjunto completo de colunas do índice, que começa no início da sequência de índice real, sem intervalos, exceto no final...

Em outras palavras, isso significa que, se você tiver um índice em (a,b,c,d), uma consulta que filtre em (a), (a,b) ou (a,b,c) também pode usar o índice , mas uma consulta que precisa filtrar em (b), ou (c) ou (b,c) não poderá usar o índice...

Portanto, no seu caso, se você precisar filtrar ou classificar com frequência na coluna item sozinho, você precisa adicionar outro índice nessa coluna sozinho ...