我正在尝试诊断为什么针对SQLite的特定查询速度很慢。 how the query optimizer works上似乎有很多信息,但是关于如何实际诊断问题的信息却很少。
特别是,当我分析数据库时,我得到了预期的sqlite_stat1表,但是我不知道stat列告诉我什么。一个示例行是:
MyTable,ix_id,25112 1 1 1 1
“25112 1 1 1 1 1”实际上是什么意思?
作为一个更广泛的问题,是否有人在诊断SQLite查询性能的最佳工具和技术上有任何好的资源?
谢谢
最佳答案
来自analyst.c:
/* Store the results.
**
** The result is a single row of the sqlite_stmt1 table. The first
** two columns are the names of the table and index. The third column
** is a string composed of a list of integer statistics about the
** index. The first integer in the list is the total number of entires
** in the index. There is one additional integer in the list for each
** column of the table. This additional integer is a guess of how many
** rows of the table the index will select. If D is the count of distinct
** values and K is the total number of rows, then the integer is computed
** as:
**
** I = (K+D-1)/D
**
** If K==0 then no entry is made into the sqlite_stat1 table.
** If K>0 then it is always the case the D>0 so division by zero
** is never possible.
关于sql - sqlite_stat1表的说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2456215/