以下と同じ結果の2つのクエリがあります。
Query 1: {
$or: [
{
field_1: "A",
},
{
field_2: "B",
},
],
field_3: "C",
},
Query 2: {
$or: [
{
field_1: "A",
field_3: "C",
},
{
field_2: "B",
field_3: "C",
},
],
}
と の 2 つの複合インデックスがfield_3_field_1
ありfield_3_field_2
ます。
両方のクエリのクエリ実行を説明すると、次のことがわかります。
- クエリ 1 は、1 に等しいシークで高速に実行され (3 倍)、はるかに高い
totalKeysExamined
andtotalDocsExamined
(これら 2 つは同じ) で、上記のインデックスの 1 つを使用しました。 - クエリ 2 は、はるかに高いシーク (32) で実行が遅くなり、はるかに低い
totalKeysExamined
とtotalDocsExamined
で、両方のインデックスが使用されました。
誰でもこの動作を説明できますか?これを照会するための推奨される方法は何ですか? ありがとう。