欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQLite中R树索引的存储结构介绍

程序员文章站 2022-04-19 17:30:01
虚表是sqlite的一种高级特性,它的实现基于sqlite module。对于数据库引擎,它和普通表一样,允许进行大多数的sql操作。SQLite的R树索引是基于虚表实现的。在SQ...

虚表是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_node,abc_parent,abc_rowid.

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

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

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

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

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