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

聚簇索引在实际中用的很多,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. Oracle DBA课程系列笔记(19)
  2. Host XXX is not allowed to connect to this MySql 远程连接
  3. 对于访问IIS元数据库失败的解决
  4. 【Antlr】Antlr生成调用图
  5. 操作系统和语言的关系(转载)
  6. 2018年高教社杯A题 高温作业专用服装设计
  7. 天正的计算机快捷命令大全,天正建筑命令快捷键大全
  8. CodeSonar网络研讨会
  9. TikTok跨境电商:TikTok代开英国小店、印尼小店,美国小黄车,广告账户
  10. 【论文-笔记】软件化雷达显示终端的设计与实现
  11. one 主格 复数 宾格_英语主格宾格形容词性物主代词及名词性物主代词练习题.doc...
  12. Java工具集-身份证(IDCardUtil)
  13. C++栈的初始化,入栈,出栈,获取栈顶元素等操作
  14. 计算机学硕调剂分数,计算机考研调剂的一些经验
  15. 05. 路由协议原理
  16. Kafka消费消息自动提交与手动提交
  17. 计算机组成原理算术逻辑实验,《计算机组成原理》算术逻辑运算实验报告.doc...
  18. 【沃顿商学院学习笔记】管理学——05腐败对个体企业的影响
  19. 基于Scrapy分布式爬虫的开发与设计
  20. 计算机二级vb弹出式菜单,等考二级VB:用VB、VFP设计右键弹出式菜单

热门文章

  1. 20141120 N2
  2. UINO优锘新slogan“数字孪生,看懂新空间”有何含义?
  3. Python 游戏框架搭建
  4. 如何用格式工厂剪辑视频
  5. 架构16 社交软件红包技术09
  6. (iOS)苹果抓包配置教程 (一)
  7. 缺页中断与页面置换理论
  8. phaser运用中,dota战术板
  9. 【Python】DataFrame中的xs用法
  10. 统计Shell脚本执行时间