MySQL
SQL

SQLの実行計画を確認する際に使うSQL諸々

indexの確認

MySQL [xxx]> show index in t_table;
+---------------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table         | Non_unique | Key_name         | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| t_table |          0 | PRIMARY          |            1 | id      | A         |       20048 |     NULL | NULL   |      | BTREE      |         |               |
| t_table |          1 | index |            1 | id2  | A         |       20048 |     NULL | NULL   | YES  | BTREE      |         |               |
+---------------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)

indexの追加

単一index

ALTER TABLE t_table ADD INDEX index(created);

複合index

単一の際と構文変わらず。

ALTER TABLE t_table ADD INDEX index_multi(created_at, updated_at);

indexの削除

DROP INDEX  index_name ON tbl_name

https://dev.mysql.com/doc/refman/5.6/ja/drop-index.html

queryの確認

実行クエリの確認

MySQL [xxx]> select * from INFORMATION_SCHEMA.PROCESSLIST order by id desc limit 10\G;
*************************** 1. row ***************************
     ID: 599155
   USER: admin
   HOST: 127.0.0.1:54267
     DB: xxx
COMMAND: Query
   TIME: 0
  STATE: executing
   INFO: select * from INFORMATION_SCHEMA.PROCESSLIST order by id desc limit 10

実行計画の確認

この辺見ればいい感じかなー。
主にtypeを見ていたり。
あとはpossible_keysとkeyの差異とか。ここを絶対に合わせたい場合はヒント句とか使えばいいんだけど、そもそもの話、実行計画を取得する元データがおかしいとか、indexの考え方が誤ってるとかそういう場合のほうが多いように思う。
https://qiita.com/kzbandai/items/ea02727f4bb539fcedb5
http://woshidan.hatenablog.com/entry/2015/06/20/165817
https://dev.mysql.com/doc/refman/5.6/ja/explain-output.html