Wie interpretieren Sie die Ausgabe von MySQL ERKLÄREN?

Wählen Sie den Inhalt der Spalte text aus entrytable.

EXPLAIN SELECT text
FROM entrytable
WHERE user = 'username' &&
`status` = '1' && (
    `status_spam_user` = 'no_spam'
    || (
        `status_spam_user` = 'neutral' &&
        `status_spam_system` = 'neutral'
    )
)
ORDER BY datum DESC
LIMIT 6430 , 10

Die Tabelle hat drei Indizes:

  • index_user (Benutzer)
  • index_datum (datum)
  • index_status_mit_spam (status, status_spam_user, status_spam_system)

Die ERKLÄREN Ergebnis:

id  select_type     table       type    possible_keys                       key         key_len     ref     rows    Extra
1   SIMPLE          entrytable  ref     index_user,index_status_mit_spam    index_user  32          const   7800    Using where; Using filesort
  • Ist possible_keys die Indizes von MySQL verwenden könnte, und keys die Indizes von MySQL tatsächlich verwendet?
  • Warum ist der index index_status_mit_spam nicht verwendet? In der Abfrage, die Spalten haben die gleiche Reihenfolge wie im index,...
  • Warum ist der index index_datum nicht für die ORDER BY?
  • Wie Optimiere ich meine Tabelle-Indizes oder die Abfrage? (Die obige Abfrage benötigt bis zu 3 Sekunden mit über einer million Einträge in der Tabelle)
InformationsquelleAutor R_User | 2013-01-03
Schreibe einen Kommentar