执行SQLite查询时,返回数据集的大小会影响查询所需的时间吗?让我们假设这个问题我实际上并没有访问结果中的任何数据,我只是想知道查询本身是否需要更长的时间。让我们假设我只是选择所有行并且没有WHERE或ORDER BY子句。
例如,如果我有两个表A和B.假设表A有一百万行,表B有10行,并且两个表都有相同数量和类型的列。选择表A中的所有行会比选择表B中的所有行花费更长的时间吗?
这是我的问题How does a cursor refer to deleted rows?的后续跟进。我猜测如果在查询期间SQLite生成数据副本,那么返回大数据集的查询可能需要更长时间,除非有优化只复制查询结果数据,如果数据库中的数据发生更改而查询仍然存在?
答案 0 :(得分:0)
根据某些细节,是的,查询可能需要不同的时间。
示例:我有一个包含大约20k条目的表。我做一个GLOB搜索必须尝试每一行,LIMIT。如果满足LIMIT,查询可以提前停止。如果没有,它必须遍历整个表(或JOIN)。因此,搜索结果太多的搜索返回的速度比仅搜索结果的搜索速度快。
如果查询必须运行相同数量的数据,我不认为所选行的数量越少越大。当然,可能会有IO成本。