首先要清楚:聚簇索引并不是一种单独的索引类型,而是一种存储数据的方式。

聚簇索引在实际中用的很多,Innodb就是聚簇索引,Myisam 是非聚簇索引。

在之前我想插入一段关于innodb和myisam的数据文件的对比:

innodb一张表在硬盘上通过两个文件存储:tablename.frm,tablename.ibd,而myisam有三个文件:tablename.frm,tablename.myi,tablename.myd。

frm是表结构文件,myi是索引文件,myd是数据文件,ibd是数据+索引文件,得出的结论是:innodb的索引和数据存储在一起,而myisam是索引和数据分开存储的。

知道了这一点区别,下面的图片看起来才更加了然于心。

这里要补充一个知识点,什么是一级索引?什么是二级索引?

答:主键id索引叫一级索引,主键以外的索引叫二级索引。

上图中的一级索引就是本文说的聚簇索引,数据和索引绑定在一起叫聚簇(索引的叶子节点直接存储表数据)。

在查询中使用一级索引的时候,直接通过索引的叶子节点找到数据,如果使用二级索引,在内部会被拆分成两次查询,第一次查询到PK(主键id),

在拿主键id去一级索引查找。

下面是非聚簇索引:

非聚簇索引中,一级索引和二级索引没有任何区别,叶子节点存储的是数据的指针,不是数据本身,这一点和聚簇索引是不一样的。

结论:上面两个图很清楚的反映了聚簇索引和非聚簇索引在存取逻辑上的差别,由于聚簇索引的索引和数据聚集在一起,所以查找的时候理论上要更快,

而非聚簇索引通过索引只能找到数据的地址,最终还要通过地址去找数据,所以理论上更慢一些。

聚簇索引中通常会按照自增id作为主键,这对高并发插入可能会有锁争情况,通过设置 innodb_autoinc_lock_mode来平衡

mysql聚簇索引文件_MySQL聚簇索引和非聚簇索引的对比相关推荐

  1. MySQL索引底层实现原理 MyISAM非聚簇索引 vs. InnoDB聚簇索引

    MySQL索引底层实现原理 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.提取句子主干,就可以得到索引的本质:索引是数据结构. 我们知道,数据库查询是数据库的 ...

  2. mysql innodb 文件_MySQL与InnoDB相关文件

    原标题:MySQL与InnoDB相关文件 上期回顾 <InnoDB存储引擎> 概要 本章将会分析构成MySQL数据库和InnoDB存储引擎的各种类型文件,这些文件有如下几种: 参数文件:主 ...

  3. mysql导入文件_mysql导入txt文件

    1.首先在命令行启动mysql net start mysql 2.登录MySQL(建议使用非root用户) mysql --local-infile=1 -u one -p 3.创建数据库 如 CR ...

  4. mysql innodb文件_MySQL文件和Innodb引擎文件

    构成MySQL数据库和InnoDB存储引擎表的各种类型文件,组要有以下文件 参数文件:告诉MySQL实例启动时在哪里可以找到,数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置 ...

  5. mysql core 文件_MySQL未能加载文件或程序集“Ubiety.Dns.Core”或它的某一个依赖项 问题的解决...

    在VS2019中使用Nuget的方式添加了最新的MySQL包 MySql.Data 8.0.19 ,默认添加了个Ubiety.Dns.Core,不知道有什么用,但是启动程序后就报错. "/& ...

  6. 分析mysql日志文件_MySQL日志文件与分析

    1.查询日志.慢查询日志.二进制日志对比 查询日志 general_log 会记录用户的所有操作,其中包含增删查改等 可以指定输出为表 慢查询日志 slow_log 只要超过定义时间的所有操作语句都记 ...

  7. mysql linux文件_MySQL在Linux系统下配置文件详解

    在日常的的开发过程中接触到了SQLServer和MySQL数据库的操作性问题,可能是以前接触的都是SQL Server,才开始接触MySQL,总感觉使用MySQL没有使用SQLserver那么顺手,一 ...

  8. mysql与文件_MySQL——文件

    构成MySQL数据库的各种类型文件,包括:参数文件 日志文件 socket文件(套接字方式连接时需要) pid文件(mysql实例进程id) MySQL表结构文件 存储引擎文件(每个存储引擎自己用来保 ...

  9. mysql innodb文件_MySQL的InnoDB文件介绍

    MySQL一个显著的特点是其可插拔的存储引擎,因此MySQL文件分为两种,一种是和MySQL数据库本身相关 的文件,一种是和存储引擎相关的文件.本文主要介绍和InnoDB存储引擎相关的文件. 表空间文 ...

最新文章

  1. 实验三:XML模型(一)
  2. 历史命令与实时记录(redhat6.8)
  3. button layui 点击事件_Layui 带多选框表格监听事件以及按钮自动点击写法实例
  4. 如何配置 SAP BTP Integration Suite 测试帐号的环境
  5. qq浏览器主页_安卓浏览器哪家强?这些小众好用的手机浏览器你知道吗
  6. MySQL INFORMATION_SCHEMA 使用
  7. 计算机应用入学考试,本科计算机应用入学考试模拟试题.doc
  8. 11. JavaScript 对象
  9. Markdown 编写示例
  10. 变分法与最优控制matlab,1987_11变分法与最优控制_10654423.pdf
  11. ukey其他错误_UKEY不能识别解决方法
  12. Eclipse启动问题:An error is occurred
  13. linux java调优
  14. ORA-12154: TNS: 无法解析指定的连接“/one card”应用程序中的服务器错误
  15. 区块链学习笔记一 BTC密码学原理
  16. C语言 CJSON使用实例
  17. ORACLE通过utl_http传送加密数据实现第三方接口
  18. 独家 | OpenAI的DALL·E模型使人类更接近通用人工智能(附链接)
  19. 知识图谱入门 【八】- 语义搜索
  20. PPT课件免费下载!国家精品公开课:《Python编程入门》

热门文章

  1. 错误使用 xlswrite 无法激活 Excel 工作表。
  2. SpringBoot 入门---摘抄自【纯洁的微笑】大哥的文章,不胜感激!
  3. 住宅装饰纸行业调研报告 - 市场现状分析与发展前景预测
  4. git 回退到某个版本后 commit过的文件被删除,怎么恢复文件
  5. HarmonyOS手机开发者版,HarmonyOS 生态最重的拼图,手机开发者 Beta 版终于到来
  6. 惠普服务器Ubuntu系统花屏,Ubuntu系统花屏问题
  7. Windows Server 2008变为Vista
  8. Win系统 - 如何评价Vista在PC史上的历史地位?
  9. 软件设计师通关宝典(有这一个就够了!)
  10. 关于云计算的优势以及未来发展趋势