首页 > 编程知识 正文

mysql唯一索引是聚簇索引吗,mysql聚簇索引怎么写

时间:2023-05-04 20:38:35 阅读:201553 作者:1034

1.聚簇索引和非聚簇索引的概念 1.1聚簇索引

将数据存储与索引放到了一块,找到了索引也就找到了数据,当表有聚簇索引时,它的数据实际上存放在索引的叶子页上,也就是B+树的叶子节点上,因为数据行不能存在两个地方,所以一个表只能有一个聚簇索引,在InnoDB中通过主键聚集数据,如果没有定义主键,InnoDB会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB会隐式定义一个主键来作为聚簇索引

1.2非聚簇索引

将数据存储与索引分开,索引结构的叶子节点指向了数据的对应行,在非聚簇索引中,索引中的逻辑顺序并不等同于表中行的物理顺序,索引是指向表中行的位置的指针,这些指针本身是有序的,通过这些指针可以在表中快速定位

1.3补充

聚簇索引和非聚簇索引的根本区别是数据记录的排列顺序和索引顺序是否一致,聚簇索引表记录的排列顺序与索引的排列顺序一致,优点是查询速度快,缺点是对表进行修改速度比较慢,这是为了保持表中的记录的物理顺序与索引的顺序一致

非聚簇索引指定了表中记录的逻辑顺序,数据记录的物理顺序和索引的顺序不一致,聚集索引和非聚集索引都采用了B树的结构,但非聚簇索引的叶子层顺序与实际的数据叶并不相同。在对聚簇索引查询时,聚簇索引的速度一般要比非聚簇索引快。

1.4何时使用聚簇索引和非聚簇索引

当我们经常对表中的记录进行修改操作时,应该使用非聚簇索引,聚簇索引适用于列经常被分组排序、表中记录比较少、需要返回某范围内的数据

2.关于非聚簇索引和聚簇索引回表查询 2.1非聚簇索引一定会回表查询吗

不一定,当查询语句所要求的字段全部命中了索引,就不用再回表查询了

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。