複合インデックス があるとします{ a: 1, b: 1 }
。
クエリdb.Collection.find( { b: 1 } )
はこのインデックスを使用しません。クエリ オプティマイザーは、このインデックスを実行候補として選択していないようです。
ただし、具体的hint
にインデックスを指定すると、クエリははるかに高速に実行され、nscan
はるかに低くなります。
db.Collection.find( { b: 1 } ).hint( { a: 1, b: 1 } )
私の質問は、インデックスを使用するとクエリが高速になる場合、クエリオプティマイザーがクエリのインデックスを単独で無視するのはなぜですか?b