1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Mysql 什么是聚集索引和非聚集索引?

Mysql 什么是聚集索引和非聚集索引?

时间:2021-06-09 15:30:12

相关推荐

Mysql 什么是聚集索引和非聚集索引?

Mysql 什么是聚集索引和非聚集索引?

1. 聚集索引1.1 为什么建议使用连续id?1.2 为什么一个表只有一个聚集索引?2. 非聚集索引

1. 聚集索引

聚集索引就是基于主键创建的索引,在InnoDB的引擎里,一张表的数据对应的物理文件本身就是按照B+Tree来组织的,聚集索引就是按照每张表的增加来构建的这样一个B+树。叶子节点会存储这个表里的每一行数据记录。

聚集索引并不是仅仅是一种索引类型,还代表的一种数据存储方式。并且表必须有一个主键,如果没有主键InnoDB会默认选择一个隐藏列,作为主键索引来存储表的数据,一般情况是建议自增id作为主键。有连续性的在磁盘下入性能和检索性能上都会很高。如果使用uuid这种随机id的话,频繁插入会导致磁盘随机io,从而性能下降。并且一个表只能存在一个聚集索引,如果有多个就会有多套副本,浪费磁盘空间,并且当操作的时候会让数据维护更困难。

1.1 为什么建议使用连续id?

有连续性的在磁盘写入性能检索性能上都会很高。如果使用uuid这种随机id的话,频繁插入会导致磁盘随机io,从而性能下降。

1.2 为什么一个表只有一个聚集索引?

如果有多个就会有多套副本,浪费磁盘空间,并且当操作的时候会让数据维护更困难。

2. 非聚集索引

除了主键索引以外的索引都叫做非聚集索引,也叫做二级索引。非聚集索引子节点存放的不是实际数据,而是指向实际数据的指针,一个表中可以拥有多个非聚集索引。

如有错误欢迎指正

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。