Nie, nie będzie.
Teoretycznie indeks na (site, product, value, id) ma wszystko, co jest wymagane do zbudowania indeksu na dowolnym podzbiorze tych pól (w tym indeksy na (product, value, id) i (value, id) ).
Jednak budowanie indeksu z indeksu dodatkowego nie jest obsługiwane.
Najpierw MySQL nie obsługuje szybkiego pełnego skanowania indeksu (czyli skanowania indeksu w kolejności fizycznej, a nie logicznej), przez co ścieżka dostępu do indeksu jest droższa niż odczyt tabeli. To nie jest problem dla InnoDB , ponieważ sama tabela jest zawsze zgrupowana.
Po drugie, kolejność rekordów w tych indeksach jest zupełnie inna, więc rekordy i tak muszą być posortowane.
Jednak główny problem z szybkością tworzenia indeksu w MySQL jest to, że generuje zamówienie na miejscu (wystarczy wstawić rekordy jeden po drugim do B-Tree ) zamiast używania wstępnie posortowanego źródła. Jak wspomniał @Daniel, szybkie tworzenie indeksów rozwiązuje ten problem. Jest dostępny jako wtyczka do 5.1 i jest preinstalowany w 5.5 .