Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL utilizza filesort sulla colonna TIMESTAMP indicizzata

In questo caso, MySQL non utilizza il tuo indice per l'ordinamento, ed è una BUONA cosa. Perché? La tua tabella contiene solo 64.000 righe, la larghezza media della riga è di circa 26 byte (se ho aggiunto le dimensioni delle colonne corrette), quindi la dimensione totale della tabella sul disco dovrebbe essere di circa 2 MB. È molto economico leggere solo 2 MB di dati dal disco alla memoria (probabilmente in sole 1-2 operazioni o ricerche su disco) e quindi eseguire semplicemente il filesort in memoria (probabilmente una variazione di quicksort).

Se MySQL eseguisse il recupero in base all'ordine dell'indice come desideri, dovrebbe eseguire 64000 operazioni di ricerca del disco, un record dopo l'altro! Sarebbe stato molto, molto lento.

Gli indici possono essere utili quando puoi usarli per passare rapidamente a una posizione nota in un file enorme e leggere solo una piccola quantità di dati, come nella clausola WHERE. Ma, in questo caso, non è una buona idea - e MySQL non è stupido!

Se la tua tabella fosse molto grande (più della dimensione della RAM), MySQL inizierebbe sicuramente a utilizzare il tuo indice, e anche questa è una buona cosa.