Rispondere alle tue domande:
-
possible_keys
gli indici che MySQL potrebbe voler usare e lekeys
sono gli indici effettivamente utilizzati da MySQL? Sì, questo è corretto. -
Perché l'indice è
index_status_mit_spam
non usato? Nella query, le colonne hanno lo stesso ordine dell'indice. SQL usa le statistiche sugli indici della tabella per determinare quale indice utilizzare. L'ordine dei campi nell'istruzione select NON ha alcun effetto su quale indice usare. Le statistiche sugli indici includono informazioni come l'unicità dell'indice e altre cose. È probabile che vengano utilizzati più indici univoci. Maggiori informazioni su questo qui:http ://dev.mysql.com/doc/innodb/1.1/en/innodb-other-changes-statistics-stima.html oppure qui:http://dev.mysql .com/doc/refman/5.0/en//myisam-index-statistics.html . Questi fattori determinano come MySQL seleziona l'unico indice usare. Utilizzerà solo UN indice . -
Perché l'indice è
index_datum
non utilizzato perORDER BY
? MySQL utilizzerà solo un indice e non due durante una query poiché l'utilizzo di un secondo indice rallenterà ulteriormente la query. Leggere un indice NON è leggere la tabella. Ciò è correlato all'efficienza operativa della query. Ecco le risposte che possono spiegare alcuni concetti:https://dba.stackexchange.com/questions/18528/performance-difference-between-clustered-and-non-clustered-index/18531#18531 Oppure L'aggiunta di una clausola limite alla query MySQL la rallenta notevolmente Oppure Indici MySQL e quando raggruppare loro . Queste risposte hanno molti dettagli che ti aiuteranno a capire l'indicizzazione di MySQL. -
Come posso ottimizzare i miei indici di tabella o la query? (La query sopra richiede fino a 3 secondi con circa un milione di voci nella tabella). Bene, qui c'è un filesort che probabilmente ti sta rallentando. È possibile che la tabella abbia troppi indici e MySQL stia selezionando quello sbagliato.
È necessario comprendere che gli indici accelerano le letture e rallentano le scritture sulle tabelle. Quindi aggiungere solo indici non è sempre una buona idea. Le risposte e i suggerimenti di cui sopra dovrebbero aiutarti a ottenere una solida comprensione.