【发布时间】:2018-02-14 16:59:35
【问题描述】:
如果查询一个表没有约束,我认为 SQLite 会对该表进行全扫描。在这种情况下它如何扫描一个表?
一张表至少有一个索引,可以是rowid、非int键或者一些组合键。 SQLite 是否需要遍历索引的 B+-tree 进行扫描?或者它可以跳转到 B 树的叶子,并且只遍历叶子而不经过那些中间节点?
【问题讨论】:
标签: sqlite
如果查询一个表没有约束,我认为 SQLite 会对该表进行全扫描。在这种情况下它如何扫描一个表?
一张表至少有一个索引,可以是rowid、非int键或者一些组合键。 SQLite 是否需要遍历索引的 B+-tree 进行扫描?或者它可以跳转到 B 树的叶子,并且只遍历叶子而不经过那些中间节点?
【问题讨论】:
标签: sqlite
在数据库文件中,B-tree pages 没有指向兄弟页面的指针(并且内部内存结构以相同的方式组织),因此必须通过父页面进行扫描。实际上,这不是问题,因为内页更有可能被缓存。
【讨论】: