博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL索引简单分析
阅读量:7175 次
发布时间:2019-06-29

本文共 1328 字,大约阅读时间需要 4 分钟。

创建2张用户表user、user2,表结构相同,但user表使用InnoDB存储引擎,而user2表则使用 MyISAM存储引擎。

-- Table "user" DDLCREATE TABLE `user` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `name` varchar(50) DEFAULT NULL,  `email` varchar(100) DEFAULT NULL,  `age` tinyint(4) DEFAULT NULL,  `nickname` varchar(50) DEFAULT NULL,  PRIMARY KEY (`id`),  UNIQUE KEY `email` (`email`),  KEY `name` (`name`),  KEY `age` (`age`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- Table "user2" DDLCREATE TABLE `user2` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `name` varchar(50) DEFAULT NULL,  `email` varchar(100) DEFAULT NULL,  `age` tinyint(4) DEFAULT NULL,  `nickname` varchar(50) DEFAULT NULL,  PRIMARY KEY (`id`),  UNIQUE KEY `email` (`email`),  KEY `name` (`name`),  KEY `age` (`age`)) ENGINE=MyISAM AUTO_INCREMENT=131610 DEFAULT CHARSET=utf8;

分别插入10W条测试数据到表user & user2。

 

对索引的使用分析

Explain Select * from user where id>100 \G;

图1

Explain Select * from user2 where id>100 \G;

图2

User 表中的数据和 User2 表中的数据是一样的,索引结构也是一样的,只不过它们的存储引擎不同。在图1中,查询用到了PRIMARY主键索引,而查询优化器预估的结果大概在65954行左右(实际是131513);在图2中,查询却没有使用索引,而是全表扫描了,返回的预估结果在131608行(实际是131509)。

Explain Select * from user where id>100 and age>50 \G;

图3

Explain Select * from user where id>100 and age=50 \G;

图4

Explain Select * from user2 where id>100 and age>50 \G;

图5

Explain Select * from user2 where id>100 and age=50 \G;

图6

 


 

分享一个不错的博客,

转载地址:http://dqfzm.baihongyu.com/

你可能感兴趣的文章
HDU 2159 FATE
查看>>
Cview的派生类
查看>>
Android activity的生命周期
查看>>
HTML5+Css3-webkit-filter
查看>>
css border-bottom(指定下边线的样式、宽度及颜色)
查看>>
P1352 没有上司的舞会
查看>>
Bzoj 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐 深搜,bitset
查看>>
关于《淘宝技术这十年》
查看>>
System类
查看>>
某网站html的注释
查看>>
macos mojave 安装brew 出错总结
查看>>
HDU 1667 Nested Dolls
查看>>
SQL数据库类型
查看>>
XGPush集成(信鸽集成)demo
查看>>
结构化异常处理 读书笔记
查看>>
性能优化3--数据库优化
查看>>
JavaScript知识点回顾
查看>>
关于浏览器兼容处理的几种方式
查看>>
第一个Asp.net小项目,主页写了下后台代码
查看>>
(推荐使用)SpringMVC注解,基本配置
查看>>