【mysql】mysql的索引有哪些?聚簇索引和非聚簇索引又是个啥?

0 回答

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

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

1 延申

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

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

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

  • 非聚簇索引一定会回表查询吗?
    不一定,当查询语句所要求的字段全部命中了索引,就不用再回表查询了

相关推荐

  1. MySQL索引索引区别

    2023-12-15 13:44:05       41 阅读
  2. mysql索引

    2023-12-15 13:44:05       9 阅读
  3. MySQL中索引索引

    2023-12-15 13:44:05       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-15 13:44:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-15 13:44:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-15 13:44:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-15 13:44:05       20 阅读

热门阅读

  1. golang学习笔记——数据结构进阶

    2023-12-15 13:44:05       35 阅读
  2. 什么是数据分析?

    2023-12-15 13:44:05       37 阅读
  3. Python实现图像批量png格式转为npy格式

    2023-12-15 13:44:05       36 阅读
  4. 【ubuntu】Linux常用截屏软件

    2023-12-15 13:44:05       41 阅读
  5. C++学习-2023/12/13-C++类型转换

    2023-12-15 13:44:05       32 阅读
  6. Centos系统上nginx安装

    2023-12-15 13:44:05       27 阅读
  7. 设计类的时候面向对象遵循的原则 SOLID

    2023-12-15 13:44:05       39 阅读
  8. 8位LED流水灯设计

    2023-12-15 13:44:05       39 阅读
  9. QT文件介绍

    2023-12-15 13:44:05       37 阅读
  10. Golang 切片相关笔记

    2023-12-15 13:44:05       35 阅读
  11. GPT-4:背景、技术特点、发展、应用与前景

    2023-12-15 13:44:05       43 阅读
  12. 用服务器搭建网站需要做什么

    2023-12-15 13:44:05       37 阅读