我正在寻找计算大型(1500万行)表中有多少行的最佳方法.select count(*) from table;根据我在此事上发现的一些较旧的帖子,天真的方式显然是O(n),例如http://osdir.com/ml/sqlite-users/2010-07/msg00437.html.
是否有一个恒定的时间机制来获取此信息,或者失败的是直接select count(*)查询的首选替代方案?
COUNT(*)SQLite 对没有子句的情况进行了特殊优化WHERE,它会遍历表的 B 树页面并计算条目数,而无需实际加载记录。然而,这仍然需要访问表的所有数据(大记录的溢出页除外),因此运行时间仍然是 O(n)。
SQLite 不会在数据库中存储单独的记录计数,因为这会使所有更改变慢。
| 归档时间: |
|
| 查看次数: |
922 次 |
| 最近记录: |