首页 > 解决方案 > 优化MongoDB索引(两字段查询)

问题描述

我有两个字段scheduledStampemail在一个名为inventory.

具有以下 jpa 查询:

fun findAllByScheduledStampAfterAndEmailEquals(scheduledStamp:Long,email:String):List<Inventory>

索引此集合的最佳方法是什么?

我希望尽可能少的索引,避免不必要的索引。

知道:

标签: mongodbindexingspring-data-jpaquery-performance

解决方案


如果您只需要支持对电子邮件的查询:索引电子邮件是必须的

如果您只需要在 scheduleStamp 上支持查询:必须索引 scheduleStamp

如果您想同时查询两者,则需要第三个索引。但是您可以创建一个复合索引来覆盖此查询和上述查询之一。

由于 Mongo 遵循前缀匹配来选择索引:

您可能在 {"email":1} 和 {"scheduledStamp:1","email":1} 上有索引

或者

您可能在 {"scheduledStamp":1} 和 {"email:1","scheduledStamp":1} 上有索引

但是,既然您说这些字段返回的文档很少:仅在 {"email":1} 和 {"scheduledStamp":1} 上有 2 个索引,即使不是最佳的,也可能表现良好。


推荐阅读