私は以前にこの問題に遭遇しました。これが私の分析です。
-
MySQL 5.7および8.0で発生しますが、古いバージョンやMariaDBでは発生しないようです。
-
私が好む「解決策」は、次のようにインデックスを変更することです。
INDEX(company_id) -- DROP this INDEX(company_id, id) -- ADD this
2列のインデックスは理論的にはInnoDBの1列のインデックスと同じですが(id
を想定) はPK`)であり、オプティマイザーはこの事実を無視しているようです状況によっては 。
また、必要に応じてPKを明示的に追加するのが好きです 。これは、スキーマの将来の読者(私を含む)に、PKを追加することで一部のクエリが恩恵を受けることを示します。
「インデックスマージ交差」が同等の複合インデックスよりも高速であるケースはまだ見つかりません。
将来的にデータの分布が変化し、私の「ヒント」が事態を悪化させることを恐れて、インデックスの「ヒント」を使用することは嫌いです。