如题所示,博主对这个问题一直模模糊糊的,网上也没一个具体的测试,都是零零散散的提一下,缺少系统的测试。前两天看到的论坛,看到两个大版主,有的说超过性能会下降,有的说超过性能会下降???行吧,咱们不如自己测测。
测试前首先是明确博主这边的各种环境,按照环境来测是最准的。
1、本地mysql配置
(1)mysql版本
(2)本地sql长度限制
查询的数量多少,和长度有关的,我们本地长度长一些,这样查询数量多的时候也不至于报错。博主本地限制长度是,一次插条数据没问题,相应的查询也不是问题哈哈。
mysql批量插入数据,一次插入多少行数据效率最高?
2、创建表和测试数据(50W)
(1)创建表语句
这里的表的数据和的值是一样的,方便咱们测试。索引什么的都建好,数据也不少了,可以用到索引的。
(2)循环插入50W条数据
3、测试in查询是否用到了索引
这里看是能用到索引的,如果大家对这块有疑问可以参考我的其他博客:mysql的in查询是可以用到索引吗?亲测详解
这里的测试主要分为三部分,主要是有顺序的查询字符串,和无顺序的查询字符串。以及查询与创建临时表的性能比较。
代码大致如下:
1、查询顺序字符串
这里的结果都是博主查询10次,求的平均值大小,大概是如下:
下面是正式结果:
其实这里可以看到,查询中的数量增加,性能下降并没有想象中那么可怕。这也是之后优化了查询的结果。
2、打乱查询字符串比较
这里对比上面的顺序查询,可以看出来性能是有细微差异的。也是,我们顺序查询的时候,经过索引会进行顺序,消耗的性能会少一些。不过我们平时进行查询的数据基本都是散乱的,所以这个还是比较有参考意义的。
3、创建临时表测试
这块主要是要创建表,写入数据,通过进行连接查询等。下面列出大致步骤和代码。
(1)创建临时表
(2)插入数据,进行测试
打印结果形如如下:
(3)临时表的耗时展示
这部分我们没有测试较少数据的查询,因为小数据的查询,耗时肯定是比查询长的。
这里能看出来:
这个测试说实话,对博主来说也是推翻了一些东西,在以前博主总是不愿意建临时表的,总觉得麻烦,创建表还得插入数据,这速度能快嘛,,结果打脸了。
1、in查询数据量多少会性能下降?
答: 根据测试来说,查询的数据量在以内都是可以接受的,这里没看到有性能剧变,猜测是之后的版本优化原因。就像查询使用索引一样,网上很多资料都说用不到索引,但是实际上之后都是可以用到的。不能说前辈们总结的是错的,只能说一直在发展进步。
2、数据量多少创建临时表比较好
答: 通过测试我们可以看到,数据量大于建临时表都是不错的选择。这块是仁者见仁智者见智了,如果查询的条件,其他部分也有用到的话,建临时表是最好的,可以多次使用。如果你只是想一锤子买卖,那么博主觉得条以内直接用查询就好了。
3、提升性能的建议
答: 博主这里只是大致测试下,代码写的勉强能用,测试精度也有限。如果想要继续提升性能的话,建议是创建临时表的时候选用内存表,性能还能提升30%左右。其他部分能提升的不多了,这里的查询已经用到了索引。。。
以上就是关于查询的总结了,博主耗费了一天周末时间测试,不过结果是好的,最起码搞懂了一些东西,下次碰到类似的情况也知道该如何选择了哈哈,一起加油!
以上就是本篇文章【mysql的in查询参数限制,多少数据量会造成性能下降?什么时候创建临时表合适?】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/news/8444.html 资讯 企业新闻 行情 企业黄页 同类资讯 首页 网站地图 返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多