Beantwortung Ihrer Fragen:
-
Ist
possible_keys
die Indizes, die MySQL verwenden möchte, undkeys
sind die Indizes, die MySQL tatsächlich verwendet? Ja das ist korrekt. -
Warum ist der Index
index_status_mit_spam
nicht benutzt? In der Abfrage haben die Spalten dieselbe Reihenfolge wie im Index. SQL verwendet Statistiken zu den Indizes der Tabelle um zu bestimmen, welcher Index verwendet werden soll. Die Reihenfolge der Felder in der Select-Anweisung hat KEINE Auswirkung auf welchem Index verwendet werden soll. Statistiken rund um Indizes beinhalten Informationen wie die Eindeutigkeit des Index und andere Dinge. Wahrscheinlich werden eindeutigere Indizes verwendet. Lesen Sie hier mehr darüber:http ://dev.mysql.com/doc/innodb/1.1/en/innodb-other-changes-statistics-estimation.html oder hier:http://dev.mysql .com/doc/refman/5.0/en//myisam-index-statistics.html . Diese Faktoren bestimmen, wie MySQL den einen Index auswählt benutzen. Es wird nur EIN Index verwendet . -
Warum ist der Index
index_datum
wird nicht fürORDER BY
verwendet ? MySQL verwendet während einer Abfrage nur einen Index, nicht zwei, da die Verwendung eines zweiten Index die Abfrage noch mehr verlangsamt. Das Lesen eines Indexes liest NICHT die Tabelle. Dies hängt mit der betrieblichen Effizienz der Abfrage zusammen. Hier sind Antworten, die einige Konzepte erklären können:https://dba.stackexchange.com/questions/18528/performance-difference-between-clustered-and-non-clustered-index/18531#18531 Oder Das Hinzufügen einer Begrenzungsklausel zu einer MySQL-Abfrage verlangsamt sie dramatisch Oder MySQL-Indizes und wann gruppiert werden soll sie . Diese Antworten enthalten viele Details, die Ihnen helfen werden, die MySQL-Indizierung zu verstehen. -
Wie kann ich meine Tabellenindizes oder die Abfrage optimieren? (Die obige Abfrage benötigt bei etwa einer Million Einträgen in der Tabelle bis zu 3 Sekunden). Nun, hier gibt es eine Dateisortierung, die Sie wahrscheinlich verlangsamt. Es kann sein, dass die Tabelle zu viele Indizes hat und MySQL den falschen auswählt.
Sie müssen verstehen, dass Indizes Lesevorgänge beschleunigen und Schreibvorgänge in Tabellen verlangsamen. Es ist also nicht immer eine gute Idee, Indizes einfach hinzuzufügen. Die obigen Antworten und Hinweise sollten Ihnen helfen, ein solides Verständnis zu erlangen.