【发布时间】:2012-10-15 11:30:11
【问题描述】:
我有两个字段a和b,其中b的选择性明显高于a。 p>
现在,如果我只查询 a 和 b (从不单独查询任何一个字段),以下两个索引中哪个更好以及为什么:
{a: 1, b : 1}{b: 1, a : 1}
Explain 似乎返回几乎相同的结果,但我在某处读到您应该首先放置更高选择性的字段。我不知道为什么这会有意义。
【问题讨论】:
-
我大胆猜测第二个索引更好,但您需要对其进行测试。对两个查询运行解释。
-
@SergioTulentsev 更新了问题...解释似乎对两者都是一样的。
-
你知道他们怎么说,“如果你看不到差异,那就没有”。 :)
-
@SergioTulentsev 这可能是正确的答案,想看看我是否遗漏了什么。
-
有一件事,它可能取决于您查询的方式和查询的顺序,尤其是排序。为了有效地使用索引,排序应该是索引中的最后一个字段。但是我也不确定您所读到的是否属实,至少我从未听说过此案。我听说过并看到复合索引的第一个字段必须匹配查询的第一个字段,但仅此而已。