MyISAM索引和InnoDB索引的区别
2024-10-18 21:25:32
首先你要知道;
无论是Myisam和Innodb引擎,如果在建表的时候没有显示的定义一行主键列的话,他内部都会自动创建一个隐藏的主键索引;
主键索引以外的索引假设称为次索引;首先Myisam和Innodb两个都是默认采用的btree索引,可以脑补一颗二叉树;
myisam引擎的数据在物理磁盘上是按照顺序存储的,而innodb引擎的表数据是随机分布的;
myisam的主键索引的叶子节点只存放数据在物理磁盘上的指针,其他次索引也是一样的;
innodb的主键索引的叶子节点下面直接存放数据,其他次索引的叶子节点指向主键id;
由此可以挖掘出一个问题,就是如果Innodb有大数据列,比如 varchar(300),这种比较多的话,那么排序的时候用主键id排序会比较慢,因为
id主键下面放着所有数据列,而Myisam就不需要扫描数据列,要解决这个问题的话可以再建一个和主键id一起的联合索引;
索引覆盖与回行:
如果要查找的数据恰好是索引列,那么就不用在去物理磁盘上去找数据了,就是不用回行,称为索引覆盖;
最新文章
- 简单C#、asp.net mvc验证码的实现
- webservice wsdl接口配置与调用
- 【leetcode】Kth Largest Element in an Array (middle)☆
- 【2016-10-11】Linux系统常用的关机或重启命令shutdown、reboot、halt、poweroff、init 0及init 6的联系与区别
- Ajax 核心函数
- Human Gene Functions
- 一个关于echo的小知识点
- js简单模仿队列
- 重拾C,一天一点点_2
- JSTL 入门
- libevent带负载均衡的多线程使用示例
- ssh, maven and eclipse 那些破事
- linux_常用压缩,解压缩命令
- JS中undefined与null的有趣 关系
- Unity 学习Json篇
- ASP.NET没有魔法——ASP.NET MVC 与数据库大集合
- (三)ajax请求不同源之jsonp跨域
- SQL JOIN 中 on 与 where 的区别
- cpu资源长期使用率过高导致系统内核锁问题
- android最最基础简单的保存xml代码