什么是MySQL的聚集索引?在本文将给大家讲解mysql的聚集索引,包括聚集索引与普通的索引的区别。

在MySQL里,聚集索引和非聚集索引分别是什么意思,有什么区别?在MySQL中,InnoDB引擎表是(聚集)索引组织表(clusteredindexorganizetable),而MyISAM引擎表则是堆组织表(heaporganizetable)。

在MySQL里,聚集索引和非聚集索引分别是什么意思,有什么区别?

在MySQL中,InnoDB引擎表是(聚集)索引组织表(clusteredindexorganizetable),而MyISAM引擎表则是堆组织表(heaporganizetable)。

也有人把聚集索引称为聚簇索引。

当然了,聚集索引的概念不是MySQL里特有的,其他数据库系统也同样有。

简言之,聚集索引是一种索引组织形式,索引的键值逻辑顺序决定了表数据行的物理存储顺序,而非聚集索引则就是普通索引了,仅仅只是对数据列创建相应的索引,不影响整个表的物理存储顺序。

我们先来看看两种存储形式的不同之处:

简单说,IOT表里数据物理存储顺序和主键索引的顺序一致,所以如果新增数据是离散的,会导致数据块趋于离散,而不是趋于顺序。而HOT表数据写入的顺序是按写入时间顺序存储的。

IOT表相比HOT表的优势是:

范围查询效率更高;

数据频繁更新(聚集索引本身不更新)时,更不容易产生碎片;

特别适合有一小部分热点数据频繁读写的场景;

通过主键访问数据时快速可达;

IOT表的不足则有:

数据变化如果是离散为主的话,那么效率会比HOT表差;

HOT表的不足有:

索引回表读开销很大;

大部分数据读取时随机的,无法保证被顺序读取,开销大;

每张InnoDB表只能创建一个聚集索引,聚集索引可以由一列或多列组成。

上面说过,InnoDB是聚集索引组织表,它的聚集索引选择规则是这样的:

首先选择显式定义的主键索引做为聚集索引;

如果没有,则选择第一个不允许NULL的唯一索引;

还是没有的话,就采用InnoDB引擎内置的ROWID作为聚集索引;

我们来看看InnoDB主键索引的示意图:

图片来自高性能MySQL

可以看到,在这个索引结构的叶子节点中,节点key值是主键的值,而节点的value则存储其余列数据,以及额外的ROWID、rollbackpointer、trxid等信息。

结合这个图,以及上面所述,我们可以知道:在InnoDB表中,其聚集索引相当于整张表,而整张表也是聚集索引。主键必然是聚集索引,而聚集索引则未必是主键。

MyISAM是堆组织表,它没有聚集索引的概念。

本文着重介绍了mysql的聚集索引,通过对比我们很容易将它与普通的索引区别开来。

mysql 聚集索引 存什么_什么是mysql的聚集索引?相关推荐

  1. mysql索引数据结构图解_深入理解Mysql索引底层数据结构与算法

    索引的定义:索引(Index)是帮助MySQL高效获取数据的数据结构. Q1:大家使用索引有没有想过这个问题?为什么索引能够帮助mysql高效获取数据?我一一给大家道来!在给大家讲之前,先更大家分享一 ...

  2. mysql索引数据结构图解_干货:mysql索引的数据结构

    索引 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构. 我们知道,数据库查询是数据库的最主要功能之一.我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计 ...

  3. mysql数据库隐式表_详解MySQL数据库常见的索引问题:无索引,隐式转换,附实例说明...

    概述 在这些年的工作之中,由于SQL问题导致的数据库故障层出不穷,而索引问题是SQL问题中出现频率最高的,常见的索引问题包括:无索引,隐式转换. 索引问题 1.无索引 当数据库中出现访问表的SQL无索 ...

  4. Mysql 索引优化分析_如何优化MySQL的性能?从索引方面优化案例分析

    今天我们来讲讲如何优化MySQL的性能,主要从索引方面优化. 建表 //建表 CREATETABLEIFNOTEXISTSstaffs( idINTPRIMARYKEYAUTO_INCREMENT, ...

  5. mysql优化说出九条_技术分享 | MySQL 优化:为什么 SQL 走索引还那么慢?

    原标题:技术分享 | MySQL 优化:为什么 SQL 走索引还那么慢? 背景 2019-01-11 9:00-10:00 一个 MySQL 数据库把 CPU 打满了. 硬件配置:256G 内存,48 ...

  6. left join 索引失效无条件_技术分享 | MySQL 优化:JOIN 优化实践

    近期刚好学习了丁奇老师的<MySQL 实战 45 讲>中的 join 优化相关知识,又刚刚好碰上了一个非常切合的 join 查询需要优化,分析过程有些曲折,记录下来留作笔记.问题 SQL ...

  7. mysql like 多个条件_千万级MySQL数据库这样建索引可以让你的数据库飞起来.........

    创建索引常用规则 1.表的主键.外键必须有索引: 2.数据量超过300的表应该有索引: 3.经常与其他表进行连接的表,在连接字段上应该建立索引: 4.经常出现在Where子句中的字段,特别是大表的字段 ...

  8. mysql 走索引 很慢_技术分享 | MySQL优化:为什么SQL走索引还那么慢?

    作者:胡呈清 背景 2019-01-11 9:00-10:00 一个 MySQL 数据库把 CPU 打满了. 硬件配置:256G 内存,48 core 分析过程 接手这个问题时现场已经不在了,信息有限 ...

  9. 怎么运用索引查处mysql表中的数据_深入理解MySQL数据库索引原理及实现,快速检索数据库 MySQL数据库使用教程...

    免费学习推荐: 一.索引的概念 1.索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址 (类似于C语言的链表通过指针指向数据记录的内存地址) . 2.使用索引后可以不用 ...

最新文章

  1. 番外:Spring MVC环境搭建和Mybatis配置避坑篇
  2. 我是一个SDN控制器
  3. qpython手机版-QPython,一个在手机上运行Python的神器
  4. 探索ASP.NET Core中的IStartupFilter
  5. dns 服务器 linux_在Linux上构建自己的DNS服务器
  6. Qt总结:QMessageBox(原生态弹出框及究极超nice封装自定义弹出框)
  7. Can not find the tag library descriptor for http://java.sun.com/jsp/jst1/core
  8. SPACEMACS 配置
  9. libtorrent源码分析(一)整体框架
  10. 笔记本电脑CPU低压、标压、高压的区别
  11. 播布客LINUX视频笔记
  12. 5款开源云计算平台推荐
  13. Openharmony应用NAPI详解--进阶篇1
  14. 面对肺炎疫情小贴士-IT奶爸带娃记
  15. Epub电子书阅读软件-IOS软件开发团队
  16. spaceclaim简单建模3
  17. hid keyboard device异常,电脑键盘驱动出现问题,无法输入,利用虚拟键盘解决问题
  18. 密立根油滴实验动态法计算(c语言)
  19. Linux系统安装网络抓包工具wireshark
  20. oracle ASM磁盘组操作常用语句

热门文章

  1. 品牌自查! 小红书用户人群分析+四象限法,精准品牌定位
  2. python opencv教程pdf_机器学习 使用OpenCV和Python进行智能图像处理.pdf
  3. BindingException: Invalid bound statement (not found)
  4. SCI、Science、Web of Science、Nature的区别
  5. 中科大文献管理笔记——文献调研起步
  6. 论文:云存储区块链技术:系统文献综述
  7. 正则表达式字符集与test判断语句参数总结
  8. CAD转图片,CAD转JPG如何修改页面尺寸?
  9. 008-企业网站纽曼官网实现
  10. sqlserver数据驱动bao1_在Jcreator下java联接SQL2008失败,数据库可以用telnet 127.0.0.1 1433登陆,数据库也可以用localhost登陆...