• MySQL索引原理和实现


    1. 数据库索引介绍

    索引是加速表的查询效率而创建的数据结构

    1.索引是一个有序的结构
    2.索引可以减少存储引擎(MYSQL)的查询数据量
    3.索引是有序结构、避免了全表扫描
    4.主键索引将随机IO变成有序IO
    5.业务写入是无序的、从有序的结构中检索
    
    可以通过元素hash值直接换算索引的物理地址
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2. InnoDB聚簇索引原理

    1.  聚簇索引定义: 行数据存放在B+树索引的叶子节点上,聚簇索引和主键索引是相同的。
    
    聚簇索引是 表记录的存储方式。oracle的索引组织表。
    MySQL InnoDB 存储引擎使用的就是索引组织表。
    
    
    2.  聚簇索引的构造规则
    MySQL聚簇索引默认使用主键索引      --有主键
    MySQL聚簇索引会使用唯一键索引     --没主键
    没有主键索引、非空唯一键索引。INNODB 会在表的列中增加ROWID列作为隐形主键
    
    
    3.  聚簇索引性能优化
    MySQL INNODB 的每张表都要有一个自增的主键 
    不推荐使用UUID主键、随机数主键
    不推荐使用多列的组合主键【ABCDEFG7列,使用ABC三列主键。组合主键会增加索引的稀疏度,增加磁盘的存储】
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    3. InnoDB 辅助索引原理

    -- InnoDB 辅助索引的特点
    1. 辅助索引的索引值是主键,不是表记录的地址(指针)
    2.使用InnoDB 辅助索引检索的时候需要进行两次索引的查询。
    3.两次索引的查询的过程:先读取辅助索引,在读取聚簇索引(主键索引)。
    4.单列索引 只有一个列的辅助索引
    5.联合索引 有多个列的辅助索引
    6.唯一键索引 多了一个唯一性约束、可以是单列索引、联合索引
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4. MyISAM 非聚簇索引

    MyISAM 存储引擎、Oracle 关系型数据库的表的行数据和索引是分库存储的。使用非聚簇索引存储结构的表叫堆表。
    
    优点:
    表的写入速度会非常快【采用无序追加的方式写数据】
    表的记录数可以容纳更多。三层非聚簇索引B+树可以容纳1073741824 行记录。 【公式 1024的三次方】
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    C++文件服务器项目—Nginx—3
    Vue vs React:你需要知道的一切
    SpringBoot学习笔记-创建个人中心页面(下)
    计算机毕业设计——农产品资源展示平台
    FAT32、exFAT 和 NTFS 之间有什么区别?
    Linux sh命令
    19.9 Boost Asio 同步字典传输
    为何90%以上的企业都在实施MES系统?到底有何好处?
    曲线艺术编程 coding curves 第八章 贝赛尔曲线(Bézier Curves)
    解决matlab报错“输入参数的数目不足”
  • 原文地址:https://blog.csdn.net/weixin_39735909/article/details/133632784