「先頭カラムが同じインデックス、それ1つ無駄ちゃう?」— 冗長インデックスの見つけ方と消し方
テーブルのインデックスを眺めていて、こんな2本が並んでいるのを見つけたことはないだろうか。 KEY `idx_logs_on_import_id` ( `import_id` ) UNIQUE KEY `idx_logs_on_import_id_and_file` ( `import_id` , `file_path` ) 結論から言うと、 上の単独インデックスはたいてい消せる 。この記事では「なぜ消せるのか」「本当に消していいのか(消せない例外)」「どう機械的に見つけるか」「安全な消し方」までを一通りまとめる。 なぜ「単独 (import_id) 」が冗長なのか ポイントは 複合インデックスの “左端プレフィックス(leftmost prefix)” は、単独インデックスとしても使える という B-Tree インデックスの性質だ。 (import_id, file_path)…
The article discusses the issue of redundant indexes in databases, specifically focusing on MySQL. It explains that a redundant index occurs when a single-column index is included in a composite index, which can be unnecessary as the single-column index can be used for lookups that the composite index can also satisfy. The article provides a method to identify and remove these redundant indexes using MySQL's standard view `sys.schema_redundant_indexes` or tools like `pt-duplicate-key-checker` and `sys.schema_unused_indexes`.
It also highlights the importance of not removing redundant indexes that are part of a foreign key constraint, as doing so can cause an error. The article concludes by demonstrating a safe way to drop a redundant index using ActiveRecord migration.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.
Also reported by 2 other outlets
- 이형일 “거주 중심 주택 문화 목표”…‘과천 비거주 1주택’ 논란엔 “재건축 되면 실입주” hani.co.kr
- 消費税1%+所得連動給付の大綱を閣議決定 財源未定で国会審議へ asahi.com