MySQLで使用されていないインデックスを探す
今年の汚れ、今年のうちに!MySQLで使っていないインデックスを削除しよう
MySQL
未使用の
インデックス
は
sys.unused_indexes
ビューで確認できる
https://dev.mysql.com/doc/refman/8.0/en/sys-schema-unused-indexes.html
performance_schema
は起動時から終了時までのデータしか保持していない点に注意
削除してはいけないインデックスも含まれている点に注意
FOREIGN KEY
制約
を持つインデックスなど
削除するにあたってはいきなり削除は危険だと考えるなら、MySQL 8.0から導入された
Invisible Index
が使える
レコードの追加・変更・削除時にインデックスは更新されるが、オプティマイザはそのインデックスを使わない
やっぱり必要だとわかって戻すときに再作成のコストがかからない
ただし
USE INDEX
や
FORCE INDEX
といった
ヒント句
でinvisibleになったインデックス名を指定するとその
クエリ
はエラーになる