Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi cette requête utilise-t-elle where au lieu d'index ?

La sortie de EXPLAIN peut parfois être trompeur.

Par exemple, filesort n'a rien à voir avec les fichiers, using where ne signifie pas que vous utilisez un WHERE clause, et using index peut apparaître sur les tables sans qu'un seul index soit défini.

Using where signifie simplement qu'il y a une clause restrictive sur la table (WHERE ou ON ), et tous les enregistrements ne seront pas renvoyés. Notez que LIMIT ne compte pas comme une clause restrictive (bien que cela puisse l'être).

Using index signifie que toutes les informations sont renvoyées à partir de l'index, sans rechercher les enregistrements dans la table. Ceci n'est possible que si tous les champs requis par la requête sont couverts par l'index.

Puisque vous sélectionnez * , c'est impossible. Champs autres que category_id , board_id , display et order ne sont pas couverts par l'index et doivent être recherchés.