美文网首页
Mysql索引简单介绍

Mysql索引简单介绍

作者: 躺在家里干活 | 来源:发表于2019-10-08 09:47 被阅读0次

    索引:存储引擎快速找到记录的一种数据结构。

    • 数据量越大,索引对性能的影响越重要
    • 索引并不是越多越好

    索引脑图

    数据库索引基础

    B-Tree索引

    存储结构

    索引的存储结构

    B-Tree中的数据都是有序的,所以索引才能加快访问速度。
    图中的key1是指所有的索引列的值

    索引之所以能够加快访问数据的速度,是因为存储引擎不需要进行全表扫描来获取需要的数据,而是从根结点(上图未体现)开始进行搜索。通过比较节点页的值(使用哪一列构建的索引,这个值就是什么,主键索引中值是我们的主键)的上限和下限,找到下层子节点,最终找到数据,或者确认数据不存在。

    哈希索引

    哈希索引就类似于HashMap,是使用所有索引列计算出一个哈希码,哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。

    特点

    1. 哈希索引只包含哈希值和行指针(数据的存储位置)
    2. 不是按照索引值顺序存储的,所以就无法用于排序
    3. 适合使用 =,IN (), <=>的操作
    4. 访问哈希索引的数据非常快,除非有很多哈希冲突

    正确创建和使用索引

    1. 使用前缀索引,如果一个列过长,如果直接创建索引,会非常大,也会慢。所以可以选取这个列开始的部分字符,做为索引列,但是部分字符的选择要适当,要能完整的体现原列在整个数据库中所占的比例。
    2. where条件中使用独立的列,如where age+1 = 15。“独立的列”指索引列不能是表达式的一部分,也不能是函数的参数
    3. 不要为每个列创建独立的索引,如果有查询需求,要使用多列索引,并且选择合适的索引列顺序
    4. 如果二级索引(非聚簇索引)的索引列可以完全覆盖到需要查询的列,那么这个索引就是覆盖索引,这样的索引可以提高查询效率,因为不需要再根据主键去读取数据。

    我的个人博客,有空来坐坐

    相关文章

      网友评论

          本文标题:Mysql索引简单介绍

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