Eve(Python)需要很长时间才能返回已过滤的查询,但是对非过滤查询很快?

时间:2017-12-13 23:37:17

标签: mongodb eve

我使用Eve作为REST API服务器与MongoDB进行交互。

运行: GET /year_origin_destination_hs07_4?where={}几乎是即时的(它返回包含33M项目的集合的第一页)。

相比之下,跑步:GET /year_origin_destination_hs07_4?where={"origin": "chn"}需要大约18秒才能返回(956k项目的第一页)。

任何人都可以解释为什么不成比例地更长?在MongoDB中过滤此连接只需要很少的时间。

MongoDB示例:db.year_origin_destination_hs07_4.find({origin: "chn"})< 1s返回分页结果

1 个答案:

答案 0 :(得分:1)

原来我必须启用此标记:OPTIMIZE_PAGINATION_FOR_SPEED

原因在于:Python Eve Documentation

  

将此项设置为True可提高分页性能。当优化处于活动状态时,不对数据库执行计数操作,这可能在大型集合上很慢。这确实会产生一些后果。首先,不返回文档计数。其次,HATEOAS不太准确:没有最后一页链接,并且总是包含下一页链接,即使在最后一页也是如此。在大型集合中,切换此功能可以极大地提高性能。默认为False(性能较慢;包括文档计数;准确的HATEOAS)。