是否可以分析SQLite SQL查询?

时间:2013-12-20 00:19:29

标签: sql c sqlite

我知道查询需要多长时间。我想知道查询的每个部分需要多长时间,以便我可以缓存某些部分以提高性能。然而,查询相当复杂。这是解释的输出:

[2,0,0,SCAN TABLE M]
[3,0,0,SCAN TABLE M]
[1,0,0,COMPOUND SUBQUERIES 2 AND 3 (UNION ALL)]
[5,0,0,SCAN TABLE E]
[6,0,0,SCAN TABLE E]
[4,0,0,COMPOUND SUBQUERIES 5 AND 6 (UNION ALL)]
[8,0,0,SCAN TABLE P]
[9,0,0,SCAN TABLE P]
[7,0,0,COMPOUND SUBQUERIES 8 AND 9 (UNION ALL)]
[0,0,0,SCAN SUBQUERY 1 AS m]
[0,0,0,EXECUTE LIST SUBQUERY 10]
[0,0,0,EXECUTE LIST SUBQUERY 10]
[0,1,1,SEARCH SUBQUERY 4 AS e USING AUTOMATIC COVERING INDEX (e=?)]
[0,2,2,SCAN SUBQUERY 7 AS p]
[0,0,0,USE TEMP B-TREE FOR GROUP BY]
[0,0,0,USE TEMP B-TREE FOR ORDER BY]

有没有办法找出每个步骤需要多长时间?

1 个答案:

答案 0 :(得分:2)

您可以使用sqlite3_stmt_status获取语句执行的总体统计信息,但没有更精细的统计信息。

EXPLAIN QUERY PLAN显示的步骤实际上并不是分开的;各种操作的执行通常是嵌套和交错的。

阅读Query PlanningThe Query PlannerThe Next-Generation Query PlannerEXPLAIN QUERY PLAN。 有了这些信息,您通常可以估算出(子)查询的效率。