mongodb - 为什么更改排序顺序会影响使用的索引?
问题描述
我有一个包含 2 个字段的 Mongo 集合,都是日期。我还有以下索引:
{date1: 1}
{date2: 1}
如果我执行以下查询,它会很快并按date2
预期使用索引向后执行 IXSCAN:
db.getCollection('foo').find({ date1: { '$gte': new Date() } }).sort({date2:-1}).limit(50)
但是,如果我颠倒排序顺序,查询会变得非常慢,而是使用date1
索引,然后find
对查询部分的结果进行排序。
我还尝试添加一个{date1: 1, date2:1}
我希望用于获取和排序的索引,但这没有区别。
为什么是这样?我希望它使用索引来date2
首先以相同的方式进行限制,而不管排序顺序如何,我也希望使用复合索引。
解决方案
推荐阅读
- swagger - 未记录的招摇错误 - 404 状态代码
- c# - C# Active Directory:获取列表临时组成员身份?
- algorithm - 使用 Boris 算法在模拟中出现速度振荡是否正常?
- git - (Git) 错误:src refspec master 不匹配任何
- c# - 带有可更新数据源的 C# DataGridView
- ios - expo ios 模拟器“无法连接到开发服务器”错误(适用于浏览器)
- javascript - next/dynamic 拒绝导入异步函数
- java - okta 对应用程序进行身份验证时如何获取会话
- google-chrome - mv3中chrome扩展中的`eval`
- sql - Azure SQL 锁