最新消息:欢迎加入小松的QQ群一起讨论一起学习,多说即将关闭,感觉好可惜啊

mysql性能实验(三)

MYSQL 576浏览 0评论

1、mysql性能实验(一)

2、mysql性能实验(二)

3、mysql性能实验(三)

4、mysql性能实验(四)待续

本章测试where条件的顺序是否影响效率,在这之前我有看到过文章说mysql where的顺序跟执行效率没有关系,因为mysql为自动排序优先查询。可我的同事不这么认为,于是抱着验证的心态来实验一下

select count(id) from demo where word1='b';
select count(id) from demo where age=20;

mysql性能实验数据量 mysql性能实验数据量

上面的截图可以看到word1=’b’条件的数据数量多,age=20条件的数量少

mysql测试效率还是用profile的方式SET profiling = 1;

测试一
说明:word1 和age 字段都没有索引

reset query cache;//清除缓存
select * from demo where word1='b' and age=20;
reset query cache;//清除缓存
select * from demo where age=20 and word1='b';
show profiles;

mysql性能实验一

测试二,重启mysql
说明:word1 和age 字段都没有索引,跟测试一执行顺序相反

reset query cache;//清除缓存
select * from demo where age=20 and word1='b';
reset query cache;//清除缓存
select * from demo where word1='b' and age=20;
show profiles;

mysql性能实验二

按我同事的理论先查记录少的sql速度会快,但是这个结论是错误的,然后两个字段都加上索引测试

ALTER TABLE `demo` ADD INDEX word1 ( `word1` );
ALTER TABLE `demo` ADD INDEX age ( `age` );

mysql性能实验添加索引

测试三,重启mysql
说明:word1 和age 字段都有索引

reset query cache;//清除缓存
select * from demo where age=20 and word1='b';
reset query cache;//清除缓存
select * from demo where word1='b' and age=20;
show profiles;

mysql性能实验三

测试四,重启mysql
说明:word1 和age 字段都有索引,跟测试三执行顺序相反

reset query cache;//清除缓存
select * from demo where age=20 and word1='b';
reset query cache;//清除缓存
select * from demo where word1='b' and age=20;

mysql性能实验四

结论:上面的测试结果mysql where条件的顺序跟效率没有关系,但是我发现每次第一次执行sql的效率都是比第二句高,在高并发或者数据量更多的时候会怎么样就不清楚了

QQ交流群:136351212

如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
转载保留版权:小松博客» mysql性能实验(三)
本文链接地址:https://www.phpsong.com/979.html

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
木有头像就木有JJ!点这里按步骤申请Gravatar头像吧!