MySQL之聚簇索引
2017-07-26 11:51
274 查看
通过聚簇索引得到的三个建议:
1,每个InnoDB的表有一个特殊的索引:聚簇索引,存储了行的数据。通常聚簇索引就是指的主键索引,即InnoDB会用有主键的每张表的主键PRIMARY KEY创建聚簇索引,索引的每个节点保存了行数据,如果没有PRIMARY
KEY主键,InnoDB则选择第一个UNIQUE NOT NULL的键用作创建聚簇索引,如果UNIQUE NOT NULL的键也没用,则
KEY主键!
2,通过聚簇索引访问行的速度很快,因为访问聚簇索引的节点直接可以获取到行数据,如果表格很大,聚簇索引通常会直接保存到磁盘通过I/O读取。所以,第二个建议:每张表的定义不要太大!
3,除聚簇索引之外的所有索引都称为 辅助索引。在
参考mysql-5.7官网文档:https://dev.mysql.com/doc/refman/5.7/en/innodb-index-types.html
1,每个InnoDB的表有一个特殊的索引:聚簇索引,存储了行的数据。通常聚簇索引就是指的主键索引,即InnoDB会用有主键的每张表的主键PRIMARY KEY创建聚簇索引,索引的每个节点保存了行数据,如果没有PRIMARY
KEY主键,InnoDB则选择第一个UNIQUE NOT NULL的键用作创建聚簇索引,如果UNIQUE NOT NULL的键也没用,则
InnoDB在包含行ID值的合成列上内部生成隐藏的聚簇索引,行按照
InnoDB分配给此类表中的行ID进行排序 。行ID是一个6字节的字段,随插入新行而单调增加。因此,行ID排序的行在物理上是插入顺序。所以,第一个建议:每张表都加上PRIMARY
KEY主键!
2,通过聚簇索引访问行的速度很快,因为访问聚簇索引的节点直接可以获取到行数据,如果表格很大,聚簇索引通常会直接保存到磁盘通过I/O读取。所以,第二个建议:每张表的定义不要太大!
3,除聚簇索引之外的所有索引都称为 辅助索引。在
InnoDB中,辅助索引中的每个记录都包含该行的主键列以及为辅助索引指定的列(即创建索引时指定的列)。
InnoDB使用此行中的主键值搜索聚簇索引中的行。如果主键长,则辅助索引使用更多的空间,因此有一个较短的主键是有利的。所以,建议三:主键不要太长,在保证唯一的情况下应尽量短!
参考mysql-5.7官网文档:https://dev.mysql.com/doc/refman/5.7/en/innodb-index-types.html
相关文章推荐
- 高性能MySQL之--聚簇索引
- mysql索引总结(3)-MySQL聚簇索引和非聚簇索引
- MySQL官方文档14.8.2.1节 — 聚簇索引和二级索引译文
- MySQL聚簇索引的使用介绍
- MySQL 聚簇索引 和 非聚簇索引
- Mysql-聚簇索引
- mysql(四)Innodb的聚簇索引
- mysql:InnoDB的主键采用聚簇索引,二级索引不采用聚簇索引
- MySQL聚簇索引
- MySQL聚簇索引和非聚簇索引的原理及使用
- [MySQL] 索引与性能(2)- 聚簇索引
- MYSQL性能调优: 对聚簇索引和非聚簇索引的认识
- MYSQL索引:对聚簇索引和非聚簇索引的认识
- Mysql死锁问题解决方式 & 聚簇索引、隔离级别等知识
- MySQL聚簇索引的使用介绍
- Mysql聚簇索引和非聚簇索引原理(数据库)
- 高性能Mysql - 创建高性能的索引(下)(聚簇索引,覆盖索引,全文索引)
- mysql的索引——innodb索引(1)聚簇索引和次级索引
- mysql 优化(3)聚簇索引和非聚簇索引
- MySQL聚簇索引的使用介绍