首页 > 解决方案 > python sqlite 查询的复杂性是否会严重影响 fetchall() 时间?

问题描述

我有一个 sqlite 数据库,它将测试结果存储在多个表中,以便在各种设计的各种修订版上运行测试。我有 python 查询,可以总结测试运行的测试结果,或者可以返回测试运行的完整结果,或者做一些更复杂的事情,比如列出给定设计和修订的每次检查的结果,无论检查来自哪个运行. 这些都快速运行并返回数据。我有一个更复杂的查询(在 sqlite 工具中运行 2 秒左右),它基本上可以找到所有在某个时间点都通过和失败的测试,并且最近的结果是失败。当我使用 cur.execute().fetchall() 在 python 中运行它时,需要 3-5 分钟才能运行。当我把它分解成碎片时, cur.execute() 需要 2 分钟左右,而 fetchall() 步骤需要更长的时间,即使返回的列表大小只有 5 个左右的元素。我的问题是为什么 fetchall() 运行所需的时间与查询的复杂性有关,而不是与返回的数据量有关。此外,为什么通过 cur.execute 查询比直接在 sqlite 工具中运行更长的时间(几分钟与几秒钟相比)会有所帮助。

标签: pythonsqlite

解决方案


推荐阅读