2013-03-01 88 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是從以前的查詢