Closed6
MySQLのFORCE_INDEXについて

Reference

概要
- クエリにおいて特定のインデックスを強制的に使用させるための設定。
- 通常、MySQLのクエリオプティマイザは最適と思われるインデックスを自動的に選択するが、必ずしもそれがベストな選択とは限らないことがある。
-
FORCE INDEX
を使うことで、開発者が指定したインデックスを強制的に利用させることが可能。

使用例
以下は users テーブルに対して idx_last_name
というインデックスを強制的に使うようMySQLに指示している。
SELECT * FROM users FORCE INDEX (idx_last_name) WHERE last_name = 'Yamada';

類似の構文との違い
構文 | 説明 |
---|---|
USE INDEX(...) |
指定したインデックスを優先的に使うが、他の選択肢も検討する。 |
IGNORE INDEX(...) |
指定したインデックスを無視して最適なインデックスを選ぶ。 |
FORCE INDEX(...) |
指定したインデックスを強制的に使う。他のインデックスは無視される。 |

注意点
- 強制的に使わせるため、パフォーマンスが悪化する可能性もある。
- FORCE INDEXは主に、オプティマイザの選択が不適切な場合にチューニング目的で使用する。
- インデックスのカーディナリティや条件式との相性も考慮が必要。

いつ使うべきか?
- クエリが遅く、EXPLAINで期待するインデックスが選ばれていないとき。
- 統計情報が不正確で、MySQLが間違った選択をするケース。
このスクラップは4ヶ月前にクローズされました