byłyby wykorzystywane jedynie przednia krawędź indeksu (a.id
), więc tylko indeks INNER JOIN
na b
skorzystałby z indeksu ... więc dodatkowe kolumny w indeksie (a.bar
i a.foo
) nie są korzystne w wysłanej przykładowej kwerendzie.
From the MySql documentation:
MySQL nie może użyć indeksu do wykonywania wyszukiwań jeśli kolumny nie tworzą od lewej prefiksu indeksu. Załóżmy, że masz SELECT
sprawozdań pokazane tutaj:
SELECT *
FROM tbl_name
WHERE col1=val1;
SELECT *
FROM tbl_name
WHERE col1=val1 AND col2=val2;
SELECT *
FROM tbl_name
WHERE col2=val2;
SELECT *
FROM tbl_name
WHERE col2=val2 AND col3=val3;
Jeśli indeks istnieje na (col1, col2, col3)
, tylko dwa pierwsze pytania użyć indeksu. Trzecie i czwarte zapytanie obejmuje kolumny indeksowane, ale (col2)
i (col2, col3)
nie są przedrostkami położonymi najdalej na lewo od (col1, col2, col3)
.