SQLite中R树索引的存储结构

SQLite中的R树索引通过虚表实现,包含_node、_parent和_rowid三个数据表。虚表存储要素ID和范围值,_node表存储节点ID和节点值,_parent表记录节点间关系,_rowid表映射虚表记录到节点ID。

虚表是sqlite的一种高级特性,它的实现基于sqlite module。对于数据库引擎,它和普通表一样,允许进行大多数的sql操作。SQLite的R树索引是基于虚表实现的。在SQLite中,R树索引的内容实质上是保存在了三个数据表中,这三个表名是在创建虚表时自动生成的,名称分别_node_rowid_parent为后缀。表的定义如下:

CREATE TABLE%_node(nodeno INTEGER PRIMARY KEY, data BLOB)

CREATE TABLE%_parent(nodeno INTEGER PRIMARY KEY, parentnode INTEGER)

CREATE TABLE%_rowid(rowid INTEGER PRIMARY KEY, nodeno INTEGER)

其中“%”是创建R树时指定的虚表的名称。比如,如果虚表的名称为abc,则对应的三个索引表分别为:abc_nodeabc_parent,abc_rowid.

这三个表这几个表的功能分别如下:

虚表:记录要素的id与范围值;

虚表_node表:记录节点的id和节点的值。

虚表_parent表:节点与其关联的节点间的关系

虚表_rowid表:记录虚表中每条记录对应的节点idnodeno)。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值