/ Pergunta de índice do MySQL - mysql, indexação

Pergunta de índice do MySQL - mysql, indexing

Eu tenho lido sobre índices no MySQLrecentemente, e alguns dos princípios são bastante diretos, mas um conceito ainda está me incomodando: basicamente, se em uma tabela hipotética com, digamos, 10 colunas, temos dois índices de coluna única (para column01 e column02 respectivamente), mais uma coluna de chave primária (alguma outra coluna), então eles serão usados ​​em uma simples consulta SELECT como esta ou não:

SELECT * FROM table WHERE column01 = "aaa" AND column02 = "bbb"

Olhando para ele, meu primeiro instinto está me dizendoque o primeiro índice recuperará um conjunto de linhas (ou chaves primárias no InnoDB, se tiver acertado a idéia) que satisfaçam a primeira condição, e o segundo índice obterá outro conjunto. E o resultado final será apenas a interseção desses dois. Nos livros pelos quais tenho passado, não consigo encontrar nada sobre esse cenário específico. É claro que, para essa consulta em particular, um índice em ambas as colunas parece ser a melhor opção, mas estou lutando para entender o processo real por trás dessa coisa toda. se eu tentar usar dois índices que descrevi acima.

Respostas:

1 para resposta № 1

Só vai usar um único índice. Você precisa criar um índice composto de várias colunas para poder indexar cada coluna que está testando. Você pode querer ler o manual para descobrir como o MySQL usa cada tipo de índice e como ordenar seus índices compostos corretamente para obter o melhor aproveitamento do mesmo.


1 para resposta № 2

Na verdade, é a pergunta mais comum sobre indexação: é melhor tem um índice com todas as colunas ou um índice individual para cada coluna?

http://use-the-index-luke.com/sql/where-clause/searching-for-ranges/index-combine-performance