我正在搜索的记录很多,例如:
{
name: "test",
price: 1000,
createdAt: ISODate("2019-01-19T00:00:00")
}
我正在对此数据进行find()操作,这些数据在name
中进行搜索,然后按createdAt
进行排序。我还可以使用$gte
和$lte
过滤价格范围,并按createdAt
进行排序。排序总是降序。
现在,MongoDB性能顾问告诉我,我需要创建以下复合索引:{ name: 1, createdAt: -1 }
,因为否则它必须检查每条记录。
但这不是意味着我也必须为price / createdAt组合创建一个索引吗?还有其他所有物业/排序订单组合吗?
我有大约20个可以搜索或过滤的属性以及8种不同的排序方法。我确定不能期望为所有这些组合添加索引吗? 我应该只留下这些没有索引,而忽略性能顾问吗?