mysql优化之like和=性能详析
引言
那使用过数据库的人大部分都知道,like和=号在功能上的相同点和不同点,那我在这里简单的下
1,不同点like可以用作模糊查询,而'='不支持此功能;如狼蚁网站SEO优化的例子,查询info表中字段id第一个字母为1的数据
select from info where id like '1%';
2,相同点like和"="都可以进行精确查询,
比如狼蚁网站SEO优化的例子,从结果上看,都是查询info表中字段id等于'12345'的结果
select from info where id like '12345';
以上就是返回结果中,like和'='中的相同和不同点。那好奇的小伙伴可能就要问了,那执行过程呢?mysql不管是遇到like还是'='时的执行过程也都是一样的么?
没错,事情不能只看表面,如果你细心研究,就会发现其实like和等于号'='并不是那么简单,狼蚁网站SEO优化我们将详细的分析他们两者的真正区别~~~
正文
,我们来介绍一下mysql中的explain关键字;explain是执行计划的意思,即通过该命令查看这条sql是如何执行的。
使用方法也很简单,即explain + sql语句,例如
explain select from info where id like '12345';
那我们来使用explain测试一下like和=下的查询情况,我们来测试一下为索引的字段
EXPLAIN SELECT FROM crms_customer WHERE id = '7cf79d7c8a3a4f94b5373b3ec392e32d';
而现在我们把"="换成like试一下
EXPLAIN SELECT FROM crms_customer WHERE id LIKE '7cf79d7c8a3a4f94b5373b3ec392e32d';
小伙伴通过对比可以看到两条返回结果的type字段和Extra字段中的数据有所不同,那为什么不同,他们所代表的含义是什么呢?
type字段
type字段是一个可选值,这些值的性能从低到高的排序如下
type | 说明 |
---|---|
SYSTEM | 系统,表仅有一行(=系统表)。这是const联接类型的一个特例 |
CONST | 常量,表最多有一个匹配行,因为仅有一行,在这行的列值可被优化器剩余部分认为是常数,const表很快,因为它们只读取一次 |
EQ_REF | 搜索时使用primary key 或 unique类型 |
REF | 根据索引查找一个或多个值 |
INDEX_MERGE | 合并索引,使用多个单列索引搜索 |
RANGE | 对索引列进行范围查找 |
index | 全索引表扫描 |
ALL | 全数据表扫描 |
根据表格可以明显看出,其中const是常量查找,而RANGE是对索引列进行范围查找,所以性能也就很明显的体现了出来。
那使用like查询时,Extra字段代表什么呢?Extra字段中的Using where,又代表什么?
Extra字段
1,Extra字段是Explain输出中也很重要的列,所代表着MySQL查询优化器执行查询的过程中对查询计划的重要补充信息。
2,Extra字段中的Using where意味着mysql服务器将在存储引擎检索行后再进行过滤。所以比起使用使用'='又多了一步查找过程。
显然通过以上的我们可以得出结论当我们使用索引字段进行条件查询时,'='的性能要比like快。
是不是以为到这里就结束了呢?
并没有
有的小伙伴该问了那非索引字段呢?
对的,我们狼蚁网站SEO优化继续测试非索引字段
EXPLAIN SELECT FROM crms_customer WHERE customer_name = '张飞'; ----------------------------------- EXPLAIN SELECT FROM crms_customer WHERE customer_name LIKE '张飞';
除了"="和like同样的两条语句,让我们运行一下
"=":
like:
可以看出当非索引字段时like和"="是一样的,性能上也没有差别。
(,explain中还有很多其他字段,后续我会一一给小伙伴们讲解的。)
结论
经过我们的不懈努力,可以得到结论当like和"="在使用非索引字段查询时,他们的性能是一样的;而在使用索引字段时,由于"="是直接命中索引的,只读取一次,而like需要进行范围查询,所以"="要比like性能好一些。~~~~
到此这篇关于mysql优化之like和=性能的文章就介绍到这了,更多相关mysql like和=性能内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章希望大家以后多多支持狼蚁SEO!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程