当前位置: 首页 > news >正文

MySQL聚簇索引和非聚簇索引的区别

前言:

聚簇索引和非聚簇索引是数据库中的两种索引类型,他们在组织和存储数据时有不同的方式。

聚簇索引:

简单理解,就是将数据和索引放在了一起,找到了索引也就找到了数据。对于聚簇索引来说,他的非叶子节点上存储的是存储数据的值,而它的叶子节点上存储的是这条记录的整行数据。

在InnoDB中,聚簇索引是按照每张表的主键构建的一种索引方式,它是将表数据按照主键的顺序存储在磁盘上的一种方式,这种索引方式保证了行的物理存储顺序和主键的逻辑顺序相同,所以查找聚簇索引的速度非常快。

非聚簇索引:

是将数据和索引分开储存,叶子节点包含索引字段值以及指向数据页数据行的逻辑指针。

在InnoDB中,非聚簇索引是根据非主键字段创建的索引,也就是二级索引。它不影响数据的物理存储顺序,而是单独创建一张索引表,用来存储索引列和对应行的指针。

总结:

在InnoDB中,主键索引就是聚簇索引,非主键索引就是非聚簇索引。

1、对于聚簇索引,它的非叶子节点存储的是索引值,它的叶子节点存储的是整行记录

2、对于非聚簇索引,它的非叶子节点存储的都是索引值,它的叶子节点上存储的是主键的值所以,非聚簇索引的查询,需要进行一次回表,就是先查到主键ID,在去查询需要的字段。

回表:

当根据非聚簇索引查询的时候,会先通过非聚簇索引查询到主键,再通过主键的值进行一次查询才能获取到我们想要的数据,这个过程叫做回表。

没有创建主键的情况怎么处理?

InnoDB的聚簇索引是根据主键构建一个B+树。如果没有索引,数据库就会选择一个不为空的唯一索引来作为聚簇索引,如果没有合适的唯一索引,那么就会以数据库添加的隐藏主键来创建聚簇索引。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 最新AI系统ChatGPT网站H5系统源码,支持AI绘画,GPT语音对话+ChatFile文档对话总结+DALL-E3文生图
  • Vue3-31-路由-RouterView的name属性的作用
  • 【STM32】TIM1在电机应用时的注意事项
  • CGAL的三角曲面网格变形
  • 创建加密分区或者文件
  • 前端 -- 基础 常用标签 ( 图像标签及其属性详解)
  • postman使用-03发送请求
  • 很实用的ChatGPT网站——httpchat-zh.com
  • 树莓派 ubuntu20.04下 python调讯飞的语音API,语音识别和语音合成
  • UIToolKit使用心得
  • 挑战Python100题(7)
  • 微软发布补丁,修复 Win10、Win11 关键漏洞
  • SQL使用从入门到优化:目录
  • c++_运算符重载(时钟加减)
  • ElasticSearch之RestClient笔记
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • express + mock 让前后台并行开发
  • Gradle 5.0 正式版发布
  • javascript 哈希表
  • JavaScript学习总结——原型
  • Java比较器对数组,集合排序
  • k8s 面向应用开发者的基础命令
  • Less 日常用法
  • npx命令介绍
  • Otto开发初探——微服务依赖管理新利器
  • Promise初体验
  • tensorflow学习笔记3——MNIST应用篇
  • Tornado学习笔记(1)
  • 包装类对象
  • 对超线程几个不同角度的解释
  • 警报:线上事故之CountDownLatch的威力
  • 前端技术周刊 2019-01-14:客户端存储
  • 前端面试之闭包
  • 移动端解决方案学习记录
  • ​queue --- 一个同步的队列类​
  • #if 1...#endif
  • #php的pecl工具#
  • %check_box% in rails :coditions={:has_many , :through}
  • (02)Hive SQL编译成MapReduce任务的过程
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (蓝桥杯每日一题)love
  • (六)Hibernate的二级缓存
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (三) diretfbrc详解
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)【Hibernate总结系列】使用举例
  • .Net 4.0并行库实用性演练
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET 中创建支持集合初始化器的类型