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
.