为什么说"B+树索引适用于全键值,键值范围或者最左键前缀查找"? 看高性能 Mysql 的困惑
ringa_lee
ringa_lee 2017-04-17 12:58:12
[MySQL讨论组]

还以书上例子来说

sqlcreate table people(
    last_name varchar(50) not null,
    first_name varchar(50) not null,
    dob date not null,
    gender enum('m','f') no null,
    key(last_name,first_name,dob)
);


这个 B+tree 的索引示意图能明白,但是为什么马上在下文就说"B+树索引适用于全键值,键值范围或者最左键前缀查找"
我应该如何去理解,是否和 B+tree 有着不可分割的关系,应该如何理解.

ringa_lee
ringa_lee

ringa_lee

全部回复(1)
巴扎黑

这个说法是不正确的,
如果只是你题中的优点,那么,很明显,二叉树更适合,
但是在使用中,二叉树是不稳定的,有几率变成单链表,所以还有平衡二叉树。
而且随着数据量的增大,查找效率是指数降低,因为二叉树的查找效率跟它的层级成正比。
B-树和B+树都是在二叉树的基础上(但本身并非二叉树)改良而来,是一种平衡策略。
B+树经过父节点缩小范围,然后通过叶子节点遍历查找,并非效率最高,
但是,由于数据库或文件操作设计IO,这样大大减少了IO,所以速度快。
以上是范围查找,对于点查找,hash更合适。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号