首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mysql-innodb之B+树索引

mysql-innodb之B+树索引

原创
作者头像
一只羊羊
修改2025-06-17 16:05:45
修改2025-06-17 16:05:45
1390
举报
文章被收录于专栏:mysqlmysql

聚簇索引

定义

聚簇索引就是根据表的主键构建的b+树,从逻辑上说,索引节点存储叶子节点的中页的偏移量等,叶子节点则存储表的行记录。从物理上来说,每个叶子节点不一定就等于一个页节点,具体要看记录大小以及是否会页分裂等问题,且数据页之间页不一定连续,只是通过双链接的形式来保证逻辑链接

特点

  • 查询数据时,依赖主键的条件按索引查询会更快的定位到具体的数据页,并取出对应数据,若还有其他条件,则再次进行条件筛选
  • 查询优化器再有主键条件的情况下都会优先使用主键索引来进行排除和筛选
  • 主键使用

辅助索引(非聚簇索引)

定义

辅助索引是指根据表的非主键列构建的b+树,但叶子节点上不存储行记录,存储指向行记录的键值,根据键值再去聚簇索引寻找

特点

  • 非主键使用
  • 依赖辅助索引查找需要的i/o数是辅助索引i/o+聚簇索引i/o树

索引管理

  • show index from t; table: 索引所在表名 non_unique: 非唯一索引 key_name: 索引名 seq_in_index:索引中该列的位置 column_name: 索引列的名称 collation: 列以何种方式存储在索引中 cardinality: 表示索引中唯一值的数目的估计值,若次值过小,则失去索引的价值 sub_part: 是否时列的部分被索引 packed: 关键字如何被压缩 index_type: 索引的类型
  • 创建索引:
    • alter table table_name add {index|key} index_name index_typeindex_option alter table t add key idx_b (b(100)); 只索引前100个字段 alter table t add key idx_a_c(a,c); a+c的联合索引
    • create uinque index index_name index_type on t (index_col_name,...)
  • 删除索引:drop index
    • drop index index_name on table_name

参数资料 MySQL技术内幕(InnoDB存储引擎)第2版

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 聚簇索引
    • 定义
    • 特点
  • 辅助索引(非聚簇索引)
    • 定义
    • 特点
  • 索引管理
    • 参数资料 MySQL技术内幕(InnoDB存储引擎)第2版
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档