Nej, det vil det ikke.
Teoretisk set et indeks på (site, product, value, id)
har alt, hvad der kræves for at bygge et indeks på ethvert undersæt af disse felter (inklusive indekserne på (product, value, id)
og (value, id)
).
Opbygning af et indeks fra et sekundært indeks understøttes dog ikke.
Først MySQL
understøtter ikke hurtig fuld indeksscanning (dvs. scanning af et indeks i fysisk rækkefølge snarere end logisk), hvilket gør en indeksadgangssti dyrere end den aflæste tabel. Dette er ikke et problem for InnoDB
, da selve tabellen altid er klynget.
For det andet er postrækkefølgerne i disse indekser helt forskellige, så posterne skal sorteres alligevel.
Imidlertid er hovedproblemet med indeksoprettelseshastigheden i MySQL
er, at den genererer ordren på stedet (bare at indsætte posterne én efter én i et B-Tree
) i stedet for at bruge en forudsorteret kilde. Som @Daniel nævnte, løser hurtig indeksoprettelse dette problem. Det er tilgængeligt som et plugin til 5.1
og leveres forudinstalleret i 5.5
.