【发布时间】:2011-04-01 19:21:57
【问题描述】:
我想使用 b-tree 作为索引,但我想不出一个 OR 查询的解决方案。
对于 OR 查询,我的意思是 select * from table where id 介于 1 和 5 之间或 id 介于 10 和 15 之间;
如果我使用 id 作为 b-tree 中的键,那么如何在 b-tree 上进行上述查询?
搜索b-tree时,假设小于6和大于6的key在不同的子树上,而不是搜索路径经过包含小于6的key的子树6、1到5之间的id可以检索,但是10到15之间的id呢?
我是否必须使用 b+tree,当我找到指向 id 1 的键时,我只是一个接一个地扫描叶子节点,直到找到指向 id 15 的键? 这种查询是不是不好的解决方案: select * from table where id between 1 and 5 OR id between 10000000 and 10000005???
或者有其他解决方案吗?
非常感谢!
【问题讨论】: