Remarque lors de la recherche d'index à l'aide d'EXPLAIN pour améliorer les performances. Depuis que j'utilise Rails, j'écris sur cette hypothèse.
Tout d'abord, regardez le journal Rails pour voir quelles requêtes sont émises.
Hoge Exists (0.7ms) SELECT 1 AS one FROM `hoges` WHERE `hoge`...
Puis connectez-vous à MySQL. Après avoir sélectionné la base de données, exécutez la requête ci-dessus avec EXPLAIN.
mysql> EXPLAIN SELECT 1 AS one FROM `hoges` WHERE `hoge`...;
+----+-------------+-------------+------+-----------------------------------------------------------------------------------------------+---------------------------+---------+-------+------+------------------------------------+
| id | select_type | table | type | possible_key | key | key_len | ref | rows | Extra |
+----+-------------+-------------+------+-----------------------------------------------------------------------------------------------+---------------------------+---------+-------+------+------------------------------------+
| 1 | SIMPLE | hoges | ref | index_hoges_on_fuga | index_hoges_on_fuga | 1023 | const | 1 | Using index condition; Using where |
+----+-------------+-------------+------+-----------------------------------------------------------------------------------------------+---------------------------+---------+-------+------+------------------------------------+
1 row in set (0.00 sec)
De cette façon, vérifiez le plan d'exécution de la requête et sélectionnez la méthode de collage qui donne de meilleurs résultats. S'il y a plusieurs candidats, il suffit de vérifier que l'index n'est pas joint, qu'il est joint (proposition 1) et qu'il est joint (proposition 2).
Je veux en particulier vérifier la clé, key_len, les lignes et Extra.
key
Une clé sélectionnée parmi possible_keys (clés répertoriées comme candidates).
key_len
Longueur de clé. Le plus court est plus rapide.
rows
Estimation du nombre approximatif de lignes.
Extra
S'il s'agit de Using index, cela signifie que la requête peut être résolue en utilisant l'index, et c'est un guide si vous voulez accélérer par l'index. En passant, dans le tableau ci-dessus, il s'agit de "Utilisation de la condition d'index", ce qui indique que la requête peut utiliser certaines des valeurs d'index.