MySQL索引原理和实现

1. 数据库索引介绍

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

复制代码
1.索引是一个有序的结构
2.索引可以减少存储引擎(MYSQL)的查询数据量
3.索引是有序结构、避免了全表扫描
4.主键索引将随机IO变成有序IO
5.业务写入是无序的、从有序的结构中检索
一般而言,无序的东西是没有价值的。【将随机变成有序是一种架构】
可以通过元素hash值直接换算索引的物理地址

2. InnoDB聚簇索引原理

复制代码
1.  聚簇索引定义: 行数据存放在B+树索引的叶子节点上,聚簇索引和主键索引是相同的。

聚簇索引是 表记录的存储方式。oracle的索引组织表。
MySQL InnoDB 存储引擎使用的就是索引组织表。


2.  聚簇索引的构造规则
MySQL聚簇索引默认使用主键索引      --有主键
MySQL聚簇索引会使用非空唯一键索引     --没主键
没有主键索引、非空唯一键索引。INNODB 会在表的列中增加ROWID列作为隐形主键


3.  聚簇索引性能优化
MySQL INNODB 的每张表都要有一个自增的主键 【顺序递增的主键 索引一般而言是追加操作】
不推荐使用UUID主键、随机数主键【乱序的主键、索引要分裂节点、移动最末端叶子节点内的元素】
不推荐使用多列的组合主键【ABCDEFG7列,使用ABC三列主键。组合主键会增加索引的稀疏度,增加磁盘的存储】

3. InnoDB 辅助索引原理

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

4. MyISAM 非聚簇索引

复制代码
MyISAM 存储引擎、Oracle 关系型数据库的表的行数据和索引是分库存储的。使用非聚簇索引存储结构的表叫堆表。

优点:
表的写入速度会非常快【采用无序追加的方式写数据】
表的记录数可以容纳更多。三层非聚簇索引B+树可以容纳1073741824 行记录。 【公式 1024的三次方】
相关推荐
运维李哥不背锅1 天前
Ansible 的条件语句与循环详解
数据库·ansible
曾凡宇先生1 天前
OpenEuler中mysql这是在执行 MySQL 密码重置操作时出现的 “找不到mysqld_safe命令” 的错误场景。
数据库·mysql
方二华1 天前
6 mysql源码中的查询逻辑
数据库·mysql
意疏1 天前
LibreTV无广告观影实测:聚合全网资源,远程访问家庭影院新方案!
数据库
不见长安在1 天前
mysql线上主从集群设置
数据库·mysql
tiging1 天前
mysql 如何让事件执行
数据库·mysql
siriuuus1 天前
MySQL 数据备份
数据库·mysql·备份
姚远Oracle ACE1 天前
Oracle AWR 报告中的SQL来自哪儿?
数据库·sql·oracle
熊文豪1 天前
KingbaseES数据库性能调优工具全面解析
数据库·kingbasees·金仓数据库·电科金仓
冠希陈、1 天前
PHP7.4.33 安装sqlsrv扩展
数据库