-
rowid 的作用、SQLite 中主键的实现方式
-
B Tree、B+Tree 在 SQLite 中的用途
-
B+Tree
-
是一种多路平衡查找树
-
非叶子节点只存键,叶子节点才存值
-
查找时间复杂度是:O(Log N)
-
-
B Tree
-
是一种多路平衡查找树
-
键与值,存储在所有节点
-
查找时间复杂度是:O(1) - O(Log N)
-
-
-
为什么要使用 without rowid
-
存在的问题
-
只有通过 rowid 查询,时间复杂度才能达到 O(Log N),如果业务上,不能提供数值类型的主键,rowid 一般都是自动生成和自动增长的,业务代码很难提前拿到 rowid,并且作为查询条件
-
如果使用非 rowid 的主键查询,时间复杂度是 O(2Log N)
-
每创建一个索引,就要额外存储大量记录,浪费存储空间
-
-
without rowid 表
-
通过 without rowid 关键字创建的表,不会自动添加 rowid 键
-
限制:
-
必须自己指定非 INTEGER 类型主键或联合主键
-
主键一列不能是null
-
不能使用 AUTOINCREMENT 机制
-
-
-
-
rowid 表的查询效率优化