部署服务时,如果底层数据采用的是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()的速度并没有很大的差距;