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

O MySQL usa índices existentes na criação de novos índices?


Não, não vai.

Teoricamente, um índice em (site, product, value, id) tem tudo o que é necessário para construir um índice em qualquer subconjunto desses campos (incluindo os índices em (product, value, id) e (value, id) ).

No entanto, não há suporte para a criação de um índice a partir de um índice secundário.

Primeiro, MySQL não oferece suporte à verificação rápida de índice completo (que é a verificação de um índice em ordem física em vez de lógica), tornando assim um caminho de acesso de índice mais caro do que a leitura da tabela. Isso não é um problema para o InnoDB , já que a própria tabela é sempre agrupada.

Em segundo lugar, as ordens de registros nesses índices são completamente diferentes, portanto, os registros precisam ser classificados de qualquer maneira.

No entanto, o principal problema com a velocidade de criação do índice no MySQL é que ele gera o pedido no local (basta inserir os registros um a um em uma B-Tree ) em vez de usar uma fonte pré-classificada. Como o @Daniel mencionou, a criação rápida de índice resolve esse problema. Está disponível como um plugin para 5.1 e vem pré-instalado em 5.5 .