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+ 支持 支持 不支持
相关推荐
municornm3 小时前
【MySQL】to_date()日期转换
数据库·mysql
流星白龙3 小时前
【MySQL】6.MySQL基本查询(1)
数据库·windows·mysql
夕除3 小时前
Mysql--11
数据库·mysql
时光追逐者4 小时前
一款免费、简单、高效的在线数据库设计工具
数据库·mysql·oracle·sql server
满天星83035774 小时前
【MySQL】表的操作
linux·服务器·数据库·mysql
Bdygsl4 小时前
MySQL(8)—— 事务
数据库·mysql
captain3765 小时前
MySQL增删改查
数据库·mysql
芒果披萨5 小时前
sql实操
数据库·sql·mysql
夕除5 小时前
Mysql--09
数据库·mysql