美文网首页
二、b-tree索引和hash索引

二、b-tree索引和hash索引

作者: _sleeping | 来源:发表于2018-08-07 10:27 被阅读14次

    索引类型

     b-tree索引和hash索引

    1.hash索引(存在内存中)

    在memory表默认是hash索引的理论查询时间复杂度为O(1)

    疑问:既然hash的查找如此高效,为什么不用hash索引

    答:

    1).hash函数计算后的结果,是随机的,结果是在磁盘上随机放置

    2).无法对范围查询进行优化

    3).无法利用前缀索引,比如在btree中,比如查询helloword的hello前缀就无法用左前缀索引

    4).排序无法优化

    5).通过索引拿到数据的位置,必须回到数据表拿数据

    2.myisam,innodb中默认用b-tree索引

    b-tree系统,可理解为’排序好的快速查询结构’

    b-tree索引误区

     在where常用的列上都加索引

    例如where category=1 and price>100 //查询第一个栏目价格100元以上的

    误区: category和price都加上索引, 只能在category和price其中一个索引,因为是独立索引,同时只能用1个。

    实际上更多使用联合索引

    联合索引需符合左前缀原则

    以index(a,b,c)为例(注意和顺序有关)联合索引遵循左前缀原则,只有左边的索引发挥了作用,其后的索引才有效

    以下表格为例

    相关文章

      网友评论

          本文标题:二、b-tree索引和hash索引

          本文链接:https://www.haomeiwen.com/subject/hyzypftx.html