はじめに
ある問題が発生し、100万件超のレコードを更新する羽目になりました。
更新バッチを作成し、動作検証したところ処理時間に問題があり、さてどうしたものかと5秒悩んだ結果、インデックスを貼れば早くなるんじゃね?と安易な考えに辿り着いたので、脳内検証を行なった後、複合インデックスを貼ってみました。
結果、劇的に速くなり、無事メンテナンス時間内に完了させることができたので、備忘として残しておきます。
複合インデックス追加
ALTER TABLE table_name ADD INDEX index_name (column_1, column_2, column_3, ...);
おわりに
複合インデックスを貼る際には、カーディナリテイが高いカラム順に指定しましょう。
因みにインデックスを貼る前後でどのくらい処理時間に差が出たかと言うと、インデックスを貼る前では数時間、インデックス貼った後では数分でした(・∀・)
おまけ(インデックス削除)
ALTER TABLE table_name DROP INDEX index_name;