MongoDB查询优化

部署服务时,如果底层数据采用的是MongoDB,为了提高响应速度,可以在查询上做一些优化。

一、关于索引

1. 建索引

在Collection上建立索引是非常有必要的,特别是需要在海量的数据中根据某个键查出一条数据时,索引就显得更加重要了。

举个栗子:

有一张记录用户行为历史的Collection,数据量在百万级,查询同一条记录,

  • 无索引:

  • 有索引:

可以明显地看出,有索引带来的速度提升是非常巨大的。

2. 关于组合索引

当查询需要匹配多个键时,使用复合索引和建立“组合”索引(即将两个键拼成一个键)的查询速度差距不大。

二、关于查询方式

1. 将多次查询合并到一次中

再举个栗子: 现在需要以一个DataFrame中某一列的每个值进行匹配查询,此时,和用pd.Series.apply()方法挨个做查询相比,使用mongodb的条件操作符$in一起查询,然后再merge回原来的DataFrame会更快一些:

2. find()和find_one()

在已知查询记录只有一条时,可以用find_one()替代find()来减少一次slice操作(但其实很快),但经过测试,发现find()和find_one()的速度并没有很大的差距;

Contents


本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。

知识共享许可协议