MySQL メモ7 Indexデメリット
Indexを登録することでselect時のパフォーマンスが向上する場合があるが、
必要以上のIndexにはデメリットもある。
Insert時
新規レコード登録時にIndexの挿入が発生するため遅くなる。
Update時
更新対象のカラムにIndexが張られている場合に、Indexの更新も発生するため遅くなる。
更新対象のIndexサイズによって速度は変わる。
Delete時
データの削除時はテーブルに張られているすべてのIndexが更新されるため遅くなる。
Indexサイズの確認
下記SQLで実行可能
SELECT table_name , engine , table_rows AS tbl_rows , avg_row_length AS rlen , floor((data_length + index_length) / 1024 / 1024) AS all_mb , floor((data_length) / 1024 / 1024) AS data_mb , floor((index_length) / 1024 / 1024) AS index_mb FROM information_schema.tables WHERE table_schema = database() ORDER BY (data_length + index_length) DESC; +----------------+--------+----------+------+--------+---------+----------+ | table_name | engine | tbl_rows | rlen | all_mb | data_mb | index_mb | +----------------+--------+----------+------+--------+---------+----------+ | user_test_1 | InnoDB | 16756286 | 85 | 1626 | 1358 | 267 | +----------------+--------+----------+------+--------+---------+----------+ 1 rows in set (0.01 sec)
index_mb がIndexサイズとなるので、267MBとなる。