[RAILS] Affinez votre requête avec EXPLAIN

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.

EXPLIQUER la procédure

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).

Comment lire EXPLAIN

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.

Recommended Posts

Affinez votre requête avec EXPLAIN
Nettoyez votre code avec Butter Knife
Créez votre propre requête de fonction Solr
Partagez-le avec votre histoire Instagram!
Décorez votre application Sinatra avec CSS