mysql聚集索引 myisam_一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM
版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/21aspnet/article/details/89303988
聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM经常遇到有人向我咨询这个问题,其实呢,网上帖子很多,也说的都对,但是呢,看客可不一定是真的理解了。所以今天在这里用最简短的语言让你明白这些区别。
看这种图表就一切都明白了:
存储引擎
索引类型
主键叶子节点
非主键叶子节点
MyISAM
非聚簇
数据地址
数据地址
InnoDB
聚簇
全部数据
主键值
key重复
不能
能
问题:InnoDB和MyISAM选那个?
MySQL5.6以后选InnoDB。
===========上面已经把这个高频问题说完了,下面是为了满足好学者所做的扩展=============
名词解释
Clustered Index:聚集索引,又称聚簇索引。
Nonclustered indexes:非聚集索引,又称非聚簇索引。
Secondary Key:二级索引,因为聚集索引只能有一个,所有同一个表其他字段只能是二级索引也就是非聚集索引。
看看经典著作《高性能MySQL(第3版)》关于聚簇索引的说明:
再看看关于隐式创建聚簇索引的说明:
关于二级索引:
MyISAM的数据分布:
InnDB最关键的就是聚集索引叶子节点存所有的数据项,二级索引存的是主键值,而不是行指针,而MyISAM存的是行指针:
下面是 InnoDB和MyISAM的索引数据存储分布,如图所示MyISAM是索引叶子节点有指针指向,而 InnoDB则直接存数据没用指针:
下面这个帖子也是写的极好的 ,作者很会画图,整体还是没用超越《高性能MySQL(第3版)》,如果上面的还看不懂可以看看此贴--《MySQL索引背后的数据结构及算法原理》。
MyISAM索引实现
MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图:
InnoDB索引实现
虽然InnoDB也使用B+Tree作为索引结构,但具体实现方式却与MyISAM截然不同。
第一个重大区别是InnoDB的数据文件本身就是索引文件。从上文知道,MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。而在InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。
第二个与MyISAM索引的不同是InnoDB的辅助索引data域存储相应记录主键的值而不是地址:
mysql聚集索引 myisam_一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM相关推荐
- 一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM
聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM经常遇到有人向我咨询这个问题,其实呢,网上帖子很多,也说的都对,但是呢,看客可不一定是真的理解了.所以今天在这里用最简短的语言让你明白这些 ...
- mysql主键创建非聚集索引_什么是聚集索引,非聚集索引,索引覆盖,回表,索引下推...
聚集索引 我们先建如下的一张表 CREATE TABLE `student` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学号',`name` var ...
- mysql创建非聚集索引_一文看懂聚集索引和非聚集索引的区别
一.深入浅出理解索引结构 实际上,可以把索引理解为一种特殊的目录.微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引.簇集索引)和非聚集索引(nonclu ...
- mysql创建非聚集索引_聚集索引和非聚集索引的区别
作者:riemann riemann.blog.csdn.net/article/details/90324846 一.深入浅出理解索引结构 实际上,可以把索引理解为一种特殊的目录.微软的SQL SE ...
- mysql 堆表_Mysql聚集索引和非聚集索引(堆组织表和索引组织表)
Mysql聚集索引和非聚集索引(堆组织表和索引组织表) 1.堆组织表(HOT)和索引组织表(IOT)有什么区别? myisam使用的堆组织表(Heap Organize Table, HOT),没有聚 ...
- mysql 重复率高字段 索引,为什么重复值高的字段不能建索引(+聚集索引和非聚集索引)...
?一.原因: -?非聚簇索引存储了对主键的引用,如果?select?字段不在非聚簇索引内,就需要跳到主键索引. -?如果非聚簇索引值重复率高,那么查询时就会大量出现上图中从右边跳到左边的情况,导致整个 ...
- Mysql聚集索引和非聚集索引(堆组织表和索引组织表)
1.堆组织表(HOT)和索引组织表(IOT)有什么区别? myisam使用的堆组织表(Heap Organize Table, HOT),没有聚集索引的概念,使用B-tree索引的存储格式,显示都是随 ...
- 【MySQL】MySQL的存储引擎和索引详解(聚集索引和非聚集索引)
目录 一.MySQL存储引擎 1.1 Innodb引擎 1.2 MyISAM引擎 1.3 InNoDB与MyISAM异同 1.4 两种引擎的选择 二.索引(Index) 2.1 InnoDB存储引擎 ...
- mysql中聚集索引和非聚集索引区别
区别一: 聚集索引:就是以主键创建的索引,在叶子节点存储的是表中的数据 非聚集索引:就是以非主键创建的索引(也叫做二级索引),在叶子节点存储的是主键和索引列. 区别二: 聚集索引中表记录的排列顺序和索 ...
最新文章
- 死锁产生条件-请求和保持条件
- 文件系统管理 之 Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍...
- python微信库wxpy_使用wxpy这个基于python实现的微信工具库的一些常见问题
- python导入csv文件-python如何导入csv文件格式
- openpyxl模块_Openpyxl让Excel飞(一)
- netty的使用场景,线程模型以及如何在springboot中使用netty?
- sql server 2005 T-SQL @@TOTAL_WRITE (Transact-SQL)
- Issure: LookupError: unknown encoding: cp65001
- go+beego+gorilla实现上传保存图片
- 银行家算法01--安全性检查 (操作系统)
- 心情好,贴一小段自己写的VBS服务器端过程,做了适度封装
- jbox弹窗_Jquery多功能提示通知弹出对话框插件jBox中文文档
- [3DsMAX]建模软件的分享
- 手机进水开机android,手机进水后开机只有启动画面进不了桌面怎么处理?
- 深度理解RNN的梯度消失和LSTM为什么能解决梯度消失
- 2024在职考研|MBA/MPA/MEM管理类硕士报考流程及基础问题扫盲
- 大型生鲜配送企业如何做到快速分拣商品?
- 图灵机器人 mysql_如何在微信小程序中制作图灵机器人?
- NginX and Riak
- Linux系统编程 / 分析开源软件Triggerhappy
热门文章
- 浅析基于 Serverless 的前后端一体化框架
- 对话阿里敏捷教练 | 成功辅导过淘宝、闲鱼,他都是如何帮助团队
- 天桥调参师秘籍:一份深度学习超参微调技术指南
- Gartner:企业机构需重新定义网络安全领导者角色
- 麒麟信安:根植于openEuler,走操作系统自主创新之路
- 华为云专属月·行业深耕专项行动正式开启
- Java面试高频题:Spring Boot+JVM+Nacos高并发+高可用已撸完​
- 央视315曝光SDK事件,应用开发者如何避坑?
- 国产数据库技术全面破冰,金融核心系统打破国外巨头垄断指日可待
- 华为发布基于自进化AI的HiSec Insight安全态势感知系统