MySQL 索引

作者: 仰望_ | 来源:发表于2020-03-11 10:18 被阅读0次

    MySQL索引的好处不言而喻,如果对MySQL正确合理设计并且使用索引就好像是一辆法拉利,然而没有设计和使用索引的MySQL就像一辆自行车

    MySQL类型

    1、普通索引

    Normal是最基本的索引,它没有任何限制,也是我们大多数情况下用到的索引

    2、唯一索引

    Unique与普通索引类似,但索引列的值必须唯一,但允许有空值(注意和主键不同)。如果是组合索引,则列值的组合必须唯一,创建方法和普通索引类似。

    3、全文索引

    Full Text 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。

    MySQL索引方式

    1、BTREE

    BTREE是最常见的索引类型,所有值(被索引的列)都是排过序的,每个叶节点到跟节点距离相等。所以BTREE适合用来查找某一范围内的数据,而且可以直接支持数据排序(ORDER BY)

    2、HASH

    1.仅支持"=","IN"和"<=>"精确查询,不能使用范围查询:
    由于Hash索引比较的是进行Hash运算之后的Hash值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的Hash算法处理之后的Hash
    2.不支持排序:
    由于Hash索引中存放的是经过Hash计算之后的Hash值,而且Hash值的大小关系并不一定和Hash运算前的键值完全一样,所以数据库无法利用索引的数据来避免任何排序运算
    3.在任何时候都不能避免表扫描:
    由于Hash索引比较的是进行Hash运算之后的Hash值,所以即使取满足某个Hash键值的数据的记录条数,也无法从Hash索引中直接完成查询,还是要通过访问表中的实际数据进行相应的比较,并得到相应的结果
    4.检索效率高,索引的检索可以一次定位,不像BTREE索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以Hash索引的查询效率要远高于BTREE索引

    相关文章

      网友评论

        本文标题:MySQL 索引

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