MongoDB中两类拆分查询的时间复杂度咨询
MongoDB拆分查询的时间复杂度分析
咱来唠唠这两个拆分后的MongoDB查询各自的时间复杂度,得结合索引情况来看才准确:
1. 查询更新时间最近的X行数据
- 有索引的最优情况:如果你的更新日期时间字段建了降序索引(毕竟要找最新的,这个索引最贴合需求),那时间复杂度是
O(logM + X)。logM是通过索引快速定位到最新数据范围的开销,索引本身是有序结构,找起来特别高效;X就是取出这X条目标数据的开销,属于线性读取的成本。 - 无索引的糟糕情况:要是没给这个时间字段建索引,MongoDB就得先扫遍全表M条数据,再给所有数据按时间排序,最后挑出前X条。这时候时间复杂度就变成了
O(M logM)——排序的开销占了大头,数据量越大,这个操作越慢,绝对是要尽量避免的。
2. 计算查询1返回结果的SCORE平均值
这个就没什么弯弯绕了:查询1已经给你返回了X条数据,MongoDB只需要遍历这X条数据,把SCORE字段的值累加起来再除以X就行。整个过程就是线性遍历计算,时间复杂度是 O(X),和原表的总数据量M完全没关系,只取决于你要计算的这X条数据的数量。
内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture
相关产品推荐
相关产品推荐

