( 读书笔记)Mysql 索引

             Mysql有不同的存储引擎类型,存储引擎使用不同的方式将索引存放在磁盘上。不同的存放方式对性能有不同的影响。MyIsam按照行存储的物理位置来寻找数据,Innodb按照主键值引用行。

        Mysql 索引的类型

        B-Tree索引

        B-Tree索引的适用场景

        匹配全名,匹配最左前缀,匹配列前缀,精确匹配一部分,并且匹配某个范围值的一部分,只访问索引的查询。

        Hash索引

        Hash索引建立在Hahs表的基础上,仅对每一列的精确查找有用。对于每一行,存储引擎计算出一个Hash Code,他是一个较小的值,并且可能和其他行的Hash码不同,Hash码保存在索引中,并且保存了一个指向Hash表中每一行的指针。

        Hash索引的限制

        Hash索引只包含了Hash码和行指针,也就意味着不能直接从索引获得数据;不能使用Hash索引进行排序;Hash索引不支持部分键值匹配;Hash索引只支持了=,in(),<=>等运算符。访问Hash索引中的数据非常快,除非碰撞率很高,当发生碰撞时,存储引擎必须访问链表中的每一行指针,逐行进行比较,确认正确的数据;如果有很多碰撞,一些索引维护操作就会变慢。

        自适应Hash索引

        当Innodb的一些索引值被频繁访问时,它就在B-Tree的顶端建立为这些值建立内存中的索引。这个过程是自动执行的,没办法配置。

         空间索引

          全文索引

                前缀索引

          使用前缀索引的好处是节约空间并提高性能,但,使用这类索引时,需要关注索引的选择性,当选择的前缀长度的选择性和整列的选择性接近时,选择的长度才较好。

         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值