Widziałem to kilka razy, ale mogłem źle interpretować plan zapytania EXPLAIN.W Mysql, dlaczego nieużywane indeksy wpływają na plan zapytania?
Załóżmy, że mam tabelę (col1, col2). Chcę dołączyć do innej tabeli zarówno dla col1, jak i dla col2. Więc tworzę indeks (col1, col2). Czasami EXPLAIN pokazuje, że indeks nie jest używany. Być może jakiś inny nieefektywny indeks jest używany lub wcale go nie ma.
Ale jeśli utworzę inny indeks (col1), zostanie użyty pierwszy indeks (col1, col2).
Czy ktoś kiedyś miał to już wcześniej? Czy masz pojęcie, dlaczego tak się stało?
Moja teoria jest taka, że nieużywany indeks zapewnia dokładniejsze statystyki dotyczące tabeli, która wskazuje plan kwerendy na użycie pierwszego indeksu. Ale nie jestem dostatecznie zaznajomiony z wewnętrznym działaniem mysql, aby wiedzieć, czy to prawda, czy jak to udowodnić.
Ma to sens. Niestety, nie mogę już odtworzyć problemu z moją bazą danych, zapytaniami i indeksami - prawdopodobnie dlatego, że statystyki danych zostały zaktualizowane podczas użytkowania. To wydaje się być właściwą odpowiedzią, chociaż nie mogę tego udowodnić za pomocą moich danych. Pozwól mi dać innym szansę na odpowiedź, ale to wygląda dobrze. – kane