Mysql--10

一、索引核心定义与优缺点

定义 :索引是帮助 MySQL 高效获取数据的有序数据结构,通过额外维护的数据结构引用数据,实现快速查找。

表格

优势 劣势
提升检索效率,降低数据库 I/O 成本 占用额外存储空间
降低数据排序成本与 CPU 消耗 降低 INSERT/UPDATE/DELETE 等更新操作的效率

二、索引分类
1. 逻辑分类

表格

分类 含义 特点 关键字
主键索引 针对表主键创建的索引 默认自动创建,仅能有一个 PRIMARY
唯一索引 避免列值重复 可存在多个 UNIQUE
常规索引 快速定位数据 可存在多个 -
全文索引 匹配文本关键词 可存在多个 FULLTEXT
2. InnoDB 存储形式分类

表格

分类 含义 特点
聚集索引 数据与索引存储在一起,叶子节点保存完整行数据 必须有且仅有一个
二级索引 数据与索引分离,叶子节点关联主键 可存在多个

聚集索引选取规则

  • 有主键 → 主键索引即聚集索引
  • 无主键 → 取第一个唯一索引作为聚集索引
  • 无主键且无合适唯一索引 → InnoDB 自动生成隐藏 rowid 作为聚集索引

三、主流索引结构
1. B+Tree(MySQL 核心索引结构)
  • 结构特征
    • 最大度数为 4(4 阶)的 B+Tree 中,每个节点最多存储 3 个键值、4 个指针
    • 所有数据存储在叶子节点,非叶子节点仅存导航键值
    • 叶子节点通过双向链表连接,支持高效范围查询与排序
  • 与 B-Tree 区别
    1. 所有数据均在叶子节点,B-Tree 数据可分布在任意节点
    2. 叶子节点形成有序链表,区间访问性能更优
2. Hash 索引
  • 实现:通过哈希算法将键值映射到哈希表,冲突用链表解决
  • 特点
    • 仅支持等值查询(=IN),不支持范围查询
    • 无法利用索引完成排序
    • 查询效率通常高于 B+Tree,单次检索即可定位数据
  • 引擎支持
    • Memory 引擎原生支持
    • InnoDB 引擎提供自适应 Hash 功能,基于 B+Tree 自动构建
3. 其他索引结构

表格

类型 描述 适用场景
R-tree MyISAM 专属空间索引 地理空间数据类型
Full-text 倒排索引实现 全文检索场景

四、存储引擎对索引的支持

表格

索引类型 InnoDB MyISAM Memory
B+Tree 支持 支持 支持
Hash 自适应支持 不支持 原生支持
R-tree 不支持 支持 不支持
Full-text 5.6+ 支持 支持 不支持
相关推荐
我是一颗柠檬2 小时前
【MySQL全面教学】MySQL备份与恢复Day14(2026年)
数据库·后端·mysql
渣渣盟2 小时前
MySQL DDL操作全解析:从入门到精通,包含索引视图分区表等全操作解析
大数据·数据库·mysql
mN9B2uk173 小时前
为mysql数据库建立索引
数据库·mysql·oracle
流星白龙3 小时前
【MySQL高阶】7.MySQL日志
数据库·mysql·adb
Irene19913 小时前
SQL示例:正确理解题意(隐藏分组键)严格SQL模式下,ORDER BY中的列必须出现在GROUP BY中或作为聚合函数
mysql
流星白龙3 小时前
【MySQL高阶】0.MySQL的安装
数据库·mysql·adb
Rick19933 小时前
联合索引是按顺序排好序的
数据库·mysql
身如柳絮随风扬4 小时前
MySQL 存储引擎深度解析:InnoDB vs MyISAM vs Memory,行锁实现与索引奥秘
数据库·mysql
灰阳阳5 小时前
MySQL-Innodb-表空间数据组织方式
数据库·mysql·innodb
Rick19935 小时前
只要条件字段在联合索引里,MySQL8.0+ 默认都会触发 索引下推(ICP)
mysql·索引下推