2015-10-05 40 views
0

I输出上SQLite的查询计划,它显示了SQLite查询计划中的数字是什么意思?

0|0|0|SCAN TABLE t (~500000 rows) 

我不知道什么是数字(500000)的含义是什么?我想这是表长度,但我在没有太多行的小表上执行查询。

有没有关于数字含义的官方文档?谢谢。

+0

是不是[官方文档](https://www.sqlite.org/eqp.html)够清楚了?请添加您在此执行的查询。 – fpietka

+0

@fpietka不,现在还不清楚。该网页的'上面的例子显示了SQLite估计全表扫描将访问大约100,000条记录。'但上面没有任何例子可以说出10万的数字。重要的是,我想知道100,000是如何获得的,为什么它与真正的表格长度不一样。 – user2215427

+0

什么是查询?你的表结构又是什么? – fpietka

回答

2

正如official documentation所示,这是数据库估计值将返回的行数。

如果在seached列上有索引,并且运行了ANALYZE,则SQLite可以根据实际数据进行估计。否则,它假定表包含一百万行,并且像column > x这样的搜索过滤掉了一半的行。

+0

确实,我在EXPLAIN QUERY PLAN之前运行了ANALYZE。但是,行号(500000)显然比实际行号(大约20)大得多。我想知道查询计划如何进行估算?谢谢。 @CL。 – user2215427

+0

没有索引,没有太多信息(但没有索引,反正也没有多少优化是可能的)。 –