如图:
左侧可以看到,我对_dateline字段做了索引。但是按照 _dateline 进行排序变得很慢,几十秒的时间。
如果去掉sort的话,速度很快。
之前没有这种情况,这个表之前有大概8000万条数据,现在删了,剩下2000万条数据,查询反而变得慢了。
我猜想是跟删除有关的。删除数据之后,是否还需要重构索引什么的吗?
我最后删除了_dateline索引,然后再创建。现在速度变得很快了。但是不明白其中的原理。
删除数据之后,索引为什么就无效了?
如图:
左侧可以看到,我对_dateline字段做了索引。但是按照 _dateline 进行排序变得很慢,几十秒的时间。
如果去掉sort的话,速度很快。
之前没有这种情况,这个表之前有大概8000万条数据,现在删了,剩下2000万条数据,查询反而变得慢了。
我猜想是跟删除有关的。删除数据之后,是否还需要重构索引什么的吗?
我最后删除了_dateline索引,然后再创建。现在速度变得很快了。但是不明白其中的原理。
删除数据之后,索引为什么就无效了?
看样子你没有完全理解索引的工作模式。简单说你需要的正确的索引是:
而这个索引可以取代
{picker_id: 1}
。关于索引可以参考官方文档:Indexes。
大量删除数据后索引性能低下的bug在3.0.x的时候出现过一次,不太确定你是什么情况。