是否可以分析 SQLite SQL 查询?
Posted
技术标签:
【中文标题】是否可以分析 SQLite SQL 查询?【英文标题】:Is it possible to profile a SQLite SQL query? 【发布时间】:2013-12-20 00:19:29 【问题描述】:我知道查询需要多长时间。我想知道查询的每个部分需要多长时间,以便我可以缓存某些部分以提高性能。然而,查询相当复杂。这是解释的输出:
[2,0,0,扫描表 M] [3,0,0,扫描表 M] [1,0,0,复合子查询 2 和 3(联合所有)] [5,0,0,扫描表 E] [6,0,0,扫描表 E] [4,0,0,复合子查询 5 和 6(联合所有)] [8,0,0,扫描表 P] [9,0,0,扫描表 P] [7,0,0,复合子查询 8 和 9(联合所有)] [0,0,0,扫描子查询 1 作为 m] [0,0,0,执行列表子查询 10] [0,0,0,执行列表子查询 10] [0,1,1,SEARCH SUBQUERY 4 AS e USING AUTOMATIC COVERING INDEX (e=?)] [0,2,2,扫描子查询 7 AS p] [0,0,0,使用 TEMP B-TREE 进行分组] [0,0,0,使用 TEMP B-TREE FOR ORDER BY]
有什么方法可以知道每个步骤需要多长时间?
【问题讨论】:
可能重复:***.com/questions/3199790/… 【参考方案1】:您可以使用sqlite3_stmt_status 获取语句执行的总体统计信息,但没有更细粒度的统计信息。
EXPLAIN QUERY PLAN
显示的步骤实际上并不是分开的;各种操作的执行通常是嵌套和交错的。
阅读Query Planning、The Query Planner、The Next-Generation Query Planner 和EXPLAIN QUERY PLAN。 有了这些信息,您通常可以估计您的(子)查询的效率。
【讨论】:
以上是关于是否可以分析 SQLite SQL 查询?的主要内容,如果未能解决你的问题,请参考以下文章