415 字
2 分钟
MySQL索引类型有哪些
分为
26%
全部章节
- 1 MySQL共享锁和排他锁的区别
- 2 数据库ACID四大特性
- 3 MVCC-多版本并发控制
- 4 MySQL全局锁,表级锁,行级锁
- 5 MySQLbinlog,redolog和undolog
- 6 MySQL索引类型有哪些 阅读中
- 7 MySQL-VARCHAR支持的最大长度
- 8 MySQL事务隔离级别
- 9 MySQL中的数据排序是怎么实现的
- 10 MySQL中几种count的区别
- 11 MySQL中CHAR和VARCHAR的区别
- 12 MySQL事务的两阶段提交是什么
- 13 MySQL中发生死锁如何解决
- 14 搭建MySQL主从服务器
- 15 如何处理MySQL的主从同步延迟
- 16 什么是MySQL的主从同步机制
- 17 MySQL中如何解决深度分页问题
- 18 分库分表场景
- 19 MySQL联合索引失效情况
- 20 MySQL-binlog
- 21 MySQL-redolog
- 22 MySQL-relaylog(中继日志)
- 23 MySQL-undolog(回滚日志)
MySQL 索引类型有哪些
按数据结构分
分为
- B-Tree 索引
- Hash 索引
- Full-text 索引

创建表的时候,InnoDB 存储引擎会根据不同的场景选择不同的列作为索引:
- 有主键:会使用主键作为聚簇索引的索引键
- 没有主键: 选择第一个不包含 NULL 值的唯一列作为聚簇索引的索引键
- 上面两个都没有的情况下,InnoDB 会自动生成一个隐式自增 id 列作为聚簇索引的索引键。
其他索引都属于辅助索引,也就是非聚簇索引或者二级索引。
按物理存储分
分为
- 聚簇索引(主键索引)
- 二级索引(辅助索引)
按字段特性分
- 主键索引
- 唯一索引
- 普通索引
- 前缀索引
主键索引是唯一的,且不允许为 NULL。每个表只能有一个主键索引。
按字段个数分
- 单列索引
- 联合索引
按数据结构分
- B+树索引
- 哈希索引
- 倒排索引(Full-text 索引)
- R-树索引 (多维树空间)
从 InnoDB b+树索引来看,分为聚簇索引和非聚簇索引 聚簇索引也就是主键索引,叶子节点存储整行的数据,非叶子节点存储主键值和指向子节点的指针。 非聚簇索引叶子节点存储主键,非叶子节点存储主键值和指向子节点的指针。 因此,非聚簇索引查询需要回表查询
从索引性质看
有 普通索引 主键索引 唯一索引 联合索引 全文索引 空间索引
发现错误或想要改进这篇文章?
在 GitHub 上编辑此页 MySQL索引类型有哪些
相关文章
按系列 / 标签 / 分类推荐