博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL面试题——聚簇索引和非聚簇索引
阅读量:2428 次
发布时间:2019-05-10

本文共 685 字,大约阅读时间需要 2 分钟。

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

1.1聚簇索引

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

1.2非聚簇索引

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

1.3补充

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

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

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

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

2.关于非聚簇索引和聚簇索引回表查询

2.1非聚簇索引一定会回表查询吗

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

转载地址:http://dhjmb.baihongyu.com/

你可能感兴趣的文章
Java中输入——输出——数据类型转化…
查看>>
MySql数据库连接不成功
查看>>
友谊到底是艘什么样的小破船,那么…
查看>>
Servlet工作原理解析与应用
查看>>
JavaWeb---制作验证码
查看>>
Java 注解
查看>>
颜色代码
查看>>
jdk1.6.+ Tomcat 7.0+myEclipse 10.1配置成功流程
查看>>
框架基础--反射机制
查看>>
二.1Web初识---1.1HTML
查看>>
ERROR:使用dom4j解析xml文件遇到中文路径问题
查看>>
Java四大核心技术思想详解
查看>>
会过日子的人长什么样子(一点碎碎念)
查看>>
Eclipse中Web开发需要用的一些插件的安装方法
查看>>
闰年的计算问题
查看>>
Maven入门
查看>>
Maven核心
查看>>
为什么凭兴趣求职,80%会失败
查看>>
Manen下的Spring MVC项目错误 集锦
查看>>
计算机核心论文投稿的一点碎碎念
查看>>