MongoDB复合索引的使用



假设我有带有以下两个键的文档:

1) 键1
2) key2

如果我正在对它们创建复合索引

{'key1':1,'key2':1}

当运行仅与关键字1相关的查询时。是否使用上面的索引?或者我也需要只为key1创建特定的索引

感谢

在MongoDB中,可以使用索引前缀来查询数据库。你不能用其他任何东西。如果查询不包含关键字前缀,则不会使用索引

假设您提出的索引{'key1':1,'key2':1}:

将使用索引的查询:

  • db.some.find({key1 : {$gt : 100}})-使用前缀
  • db.some.find({key1 : {$gt : 100}, key2 : {$lt : 30}})-使用完整索引
  • db.some.find({key3 : 'test'}).sort({key1 : 1})-使用前缀进行排序(方向匹配)

不使用索引的查询:

  • db.some.find({key2 : {$gt : 100}})-索引顺序很重要-key2不是前缀
  • db.some.find({key3 : 'test'}).sort({key1 : -1})-多列索引的索引方向问题
  • db.some.find({key3 : 'test'}).sort({key2 : 1})-它不是前缀

是。在B-树索引中,可以使用列的前缀。

因此,您可以将索引用于"key1"上的查询(但对于"key2"则没有那么有效,索引中的列顺序很重要)。

这与打印的电话簿中的情况相同,该电话簿是[lastName,firstName]的索引。使用它可以很容易地按lastName查找人员(按firstName查找人员不那么容易,但仍然比打电话给每个人并询问他们的名字更有效)。

相关内容

  • 没有找到相关文章

最新更新