Odpowiadając na Twoje pytania:
-
Czy
possible_keys
indeksy, których MySQL może chcieć użyć ikeys
jakie indeksy faktycznie używa MySQL? Tak, to jest poprawne. -
Dlaczego indeks to
index_status_mit_spam
nieużywany? W zapytaniu kolumny mają taką samą kolejność jak w indeksie. SQL używa statystyk dotyczących indeksów tabeli aby określić, którego indeksu użyć. Kolejność pól w instrukcji select NIE ma żadnego wpływu na którym indeksie użyć. Statystyki dotyczące indeksów zawierają informacje takie jak unikalność indeksu i inne rzeczy. Prawdopodobnie zostanie użytych więcej unikalnych indeksów. Przeczytaj więcej na ten temat tutaj:http ://dev.mysql.com/doc/innodb/1.1/en/innodb-other-changes-statistics-estimation.html lub tutaj:http://dev.mysql .com/doc/refman/5.0/en//myisam-index-statistics.html . Czynniki te określają, w jaki sposób MySQL wybierze jeden indeks używać. Będzie używać tylko JEDNEGO indeksu . -
Dlaczego indeks
index_datum
nie używane dlaORDER BY
? MySQL użyje tylko jednego indeksu, a nie dwóch podczas zapytania, ponieważ użycie drugiego indeksu jeszcze bardziej spowolni zapytanie. Czytanie indeksu NIE jest czytaniem tabeli. Wiąże się to z wydajnością operacyjną zapytania. Oto odpowiedzi, które mogą wyjaśnić niektóre pojęcia:https://dba.stackexchange.com/questions/18528/performance-difference-between-clustered-and-non-clustered-index/18531#18531 Lub Dodanie klauzuli limit do zapytania MySQL znacznie je spowalnia Lub Indeksy MySQL i kiedy grupować je . Te odpowiedzi zawierają wiele szczegółów, które pomogą Ci zrozumieć indeksowanie MySQL. -
Jak mogę zoptymalizować moje indeksy tabel lub zapytanie? (Powyższe zapytanie potrzebuje do 3 sekund przy około milionie wpisów w tabeli). Cóż, jest tutaj sortowanie plików, które prawdopodobnie Cię spowalnia. Może się zdarzyć, że tabela ma zbyt wiele indeksów, a MySQL wybiera zły.
Musisz zrozumieć, że indeksy przyspieszają odczyty i spowalniają zapisy do tabel. Dlatego samo dodawanie indeksów nie zawsze jest dobrym pomysłem. Powyższe odpowiedzi i wskazówki powinny pomóc w uzyskaniu solidnego zrozumienia.