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

1.1聚簇索引

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

1.2非聚簇索引

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

1.3补充

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

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

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

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

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

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

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

MySQL面试题——聚簇索引和非聚簇索引相关推荐

  1. mysql 聚簇索引和非聚簇索引_聚簇索引和非聚簇索引

    聚簇索引并不是一种单独的索引类型,而是一种数据存储方式.具体细节依赖于其实现方式. MySQL数据库中innodb存储引擎,B+树索引可以分为聚簇索引(也称聚集索引,clustered index)和 ...

  2. mysql 聚簇索引和非聚簇索引_MySQL学习之——索引

    转自:CSDN MySQL是目前绝大多数互联网公司使用的关系型数据库,它性能出色.资源丰富.成本低廉,是快速搭建互联网应用的首选关系型数据库.但是,俗话说,"好马配好鞍",仅仅会使 ...

  3. mysql 聚簇索引和非聚簇索引_图文并茂,说说MySQL索引

    点击上方 小伟后端笔记 ,选择 星标 公众号 重磅资讯.干货,第一时间送达 作者:小小木的博客来源:cnblogs.com/wyc1994666/p/10831039.html 序 开门见山,直接上图 ...

  4. 在mysql中建立聚簇索引_给我一分钟,让你彻底明白MySQL聚簇索引和非聚簇索引...

    推荐阅读:吊打面试官!MySQL灵魂100问,你能答出多少? MySQL的InnoDB索引数据结构是B+树,主键索引叶子节点的值存储的就是MySQL的数据行,普通索引的叶子节点的值存储的是主键值,这是 ...

  5. Mysql聚簇索引和非聚簇索引原理(数据库)

    一.'页'和操作系统的关系 ①为什么要有内存管理? 我们知道,一个进程完成他的功能,需要访问磁盘加载数据到内存然后等待进入cpu运算,因为数据量大小远远大于内存大小.因此提出虚拟内存概念.虚拟内存就是 ...

  6. MySQL中Innodb的聚簇索引和非聚簇索引

    聚簇索引 数据库表的索引从数据存储方式上可以分为聚簇索引和非聚簇索引(又叫二级索引)两种.Innodb的聚簇索引在同一个B-Tree中保存了索引列和具体的数据,在聚簇索引中,实际的数据保存在叶子页中, ...

  7. mysql的聚簇索引和非聚簇索引

    mysql的聚簇索引和非聚簇索引 1.一个表中只能有一个索引吗? 可以按照需求来创建多个索引,但不要太多. 2.每一个索引是一棵B+树,还是所有的索引共用一棵B+树? 一个索引一棵B+树. 3.如果有 ...

  8. MySQL中的聚簇索引、非聚簇索引、联合索引和唯一索引

    一.索引类型 索引根据底层实现可分为B-Tree索引和哈希索引,大部分时候我们使用的都是B-Tree索引,因为它良好的性能和特性更适合于构建高并发系统. 根据索引的存储方式来划分,索引可以分为聚簇索引 ...

  9. MySQL聚簇索引和非聚簇索引的原理及使用

    从数据结构角度 1.B+树索引 2.hash索引 3.FULLTEXT索引(InnoDB引擎5.7以后支持) 4.R-Tree索引(用于对GIS数据类型创建SPATIAL索引) 问题:这些索引的区别跟 ...

最新文章

  1. 跨域部署Silverlight时需要注意的问题
  2. 升维:ValueError: all the input arrays must have same number of dimensions,
  3. OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五
  4. BZOJ3163 [Heoi2013]Eden的新背包问题
  5. 读郭老师推荐书籍--《原则》
  6. 使用Log4j - Java异常处理
  7. Deeplab unexpected label
  8. Python有多火,来看一份24小时榜单,从入门到进阶,赶紧收藏!
  9. java基础入门数据类型,JAVA基础教程:JAVA的基本数据类型及介绍
  10. Tomcat5的数据库连接池配置
  11. 实用———springmvc接收参数校验
  12. 数据库DB2性能优化高级进阶
  13. 意大利奢侈品牌-Kiton 华丽进驻北京新光天地-时尚生活-泛高尔夫网
  14. Jetpack-Compose
  15. 六度分离(Floyd算法)
  16. 代码统计工具CLOC
  17. 阿里云免费ssl证书(PFX格式证书)安装
  18. APISpace 通知短信API
  19. redis 配置文件( IP、端口、密码等信息)
  20. c语言中<< , >>的作用

热门文章

  1. 链队的创建、入队、出队
  2. shell中的try...catch...
  3. 什么是合成孔径雷达(SAR)
  4. html表单中下拉列表,HTML select下拉列表标签
  5. (笔记)yolov5自适应anchors
  6. 使用物价水平修正票房数据,长津湖还是票房冠军吗?
  7. [附源码]Python计算机毕业设计东北鹿产品售卖网站Django(程序+LW)
  8. android电视原理图,电视机的基本工作原理及结构组成
  9. python连接数据库生成可视化_python3.6 连接数据库并用matplotlib可视化代码
  10. 【Delphi学习】Form的borderstyle属性