聚集索引和二级索引每张使用 InnoDB 作为存储引擎的表都有一个特殊的索引称为聚集索引 , 它保存着每一行的数据 , 通常 , 聚集索引就是主键索引 。为了得到更高效的查询、插入以及其他的数据库操作的性能 , 你必须理解 InnoDB 引擎是如何使用聚集索引来优化常见的查找和 DML 操作 。
- 如果你的表定义了一个主键 , InnoDB 就使用它作为聚集索引 。因此 , 尽可能的为你的表定义一个主键 , 如果实在没有一个数据列是唯一且非空的可以作为主键列 , 建议添加一个自动递增列作为主键列 。
- 如果你的表没有定义主键 , InnoDB 会选择第一个唯一非空索引来作为聚集索引 。
- 如果你的表既没有主键 , 又没有合适的唯一索引 , InnoDB 内部会生成一个隐式聚集索引 —— GEN_CLUST_INDEX , 该索引建立在由 rowid 组成的合成列上 。数据行根据 InnoDB 分配的 rowid 排序 , rowid 是一个 6 字节的字段 , 随着数据插入而单调递增 。也就是说 , 数据行根据 rowid 排序实际上是根据插入顺序排序 。
二级索引和聚集索引如何关联除了聚集索引外的其他索引类型都属于二级索引 。在 InnoDB 中 , 二级索引中的每个记录都包含该行的主键列 , 以及二级索引指定的列;聚集索引中 , InnoDB 通过主键值来查询数据行 。
【MySQL 聚集索引和二级索引】如果主键过长 , 二级索引就需要更大的空间 , 因此 , 使用短的主键列是很有利的 。
推荐阅读
- 10分钟教你Python+MySQL数据库操作
- window7下的mysql的数据
- Windows系统配置apache+php+mysql环境图文教程
- 最可怕的搜索引擎 运维必备之——Shodan
- MySQL中的ACID是如何实现的?
- 搜索引擎如何识别网站群
- 服务器安装mysql8数据库,并供外界远程访问
- MySQLAnemometer可视化工具安装
- 专治 MySQL 乱码,再也不想看到乱码了
- 我这么久,才弄清楚mysql的触发器、视图、索引,受益匪浅