传统的关系型数据库,如 Mysql,SqlServer 都是用 B+tree 来进行索引的,也就是说如果执行一个范围查询如:
SELECT * FROM USERS A WHERE A.Id BETWEEN 5 AND 1000;
这个时候查询优化器会使用主键 ID 上的唯一索引先找到 ID=5 的记录,然后以此去遍历叶子节点上面的记录,直到 ID>1000 的时候停止。
那么好,问题来了,MongoDb 使用 B-tree 进行索引,那么意味着叶子节点之间不是以链表的形式链接在一起的,这个时候同样的查询,假设 MongoDB 找到了记录为 5 的记录(并且这个时候这笔 ID 为 5 的记录就是在 B-tree 的叶子节点上面), 接下来会怎么处理?找了很久都没才找到相关的资料
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.