2013-03-01 48 views
2

我正在写我自己的小数据库引擎。除检查B +树的每个叶节点之外,是否有任何有效的方法来实现跳过功能,这对于较大的条目来说会很慢。数据库如何实现跳过?

+0

你是什么意思跳过最后的关键? – cheeken 2013-03-01 04:23:37

+0

像MySQL中的'offset' – alice 2013-03-01 10:23:49

回答

0

如果您为索引使用B +树,则所有值都存储在树叶中,因此可以链接在一起以形成(排序)链接列表,或者更确切地说是unrolled linked list。这是B +树比普通B树的主要优势。

即使展开列表允许您执行某种形式的跳过,也没有什么能阻止您在记录上实现skip lists,并将这些列表的节点用作btree值。

0

2年后,但无论如何。 你也可以用卡桑德拉的方式做到这一点。没有限制,但您指定了上一个查询的最后一个键,例如

SELECT * FROM ABC其中key> 123极限100

,其中123是从以前的查询