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

Perché questa query utilizza where invece di index?

L'output di EXPLAIN a volte può essere fuorviante.

Ad esempio, filesort non ha nulla a che fare con i file, using where non significa che stai usando un WHERE clausola e using index può apparire sulle tabelle senza un singolo indice definito.

Using where significa solo che c'è una clausola restrittiva sul tavolo (WHERE o ON ), e non tutti i record verranno restituiti. Nota che LIMIT non conta come clausola restrittiva (sebbene possa esserlo).

Using index significa che tutte le informazioni vengono restituite dall'indice, senza cercare i record nella tabella. Ciò è possibile solo se tutti i campi richiesti dalla query sono coperti dall'indice.

Poiché stai selezionando * , questo è impossibile. Campi diversi da category_id , board_id , display e order non sono coperti dall'indice e devono essere cercati.