mysql性能优化

阅读更多
mysql性能 leftjoin性能问题 多个leftjoin会导致全表扫描 解决方案临时表
mysql 字符串有序主键VS自增主键 性能基本一致


MySQL从5.6升级到5.7后,发现下面的SQL在在5.6版本执行时间是2秒多,5.7版本执行时间是18秒多
select PART_ID,PART_KEY_VAL from PARTITION_KEY_VALS where PART_ID in (3128611,3128612,3128613...这里省略30多万) and INTEGER_IDX >= 0 order by PART_ID asc,INTEGER_IDX asc;

【原因分析】
mysql 5.7新增了范围查询优化参数 range_optimizer_max_mem_size ,这个参数限制范围查询优化使用的内存,默认值是8M,当使用内存超过8M则会放弃使用范围查询方法而采用其他方法比如用全表扫描来代替。
解决办法:
将 range_optimizer_max_mem_size 修改为100M后,SQL执行响应时间为2秒。
官方文档解释如下
https://dev.mysql.com/doc/refman/5.7/en/range-optimization.html


参考
https://blog.csdn.net/zhanglinlove/article/details/83540292

你可能感兴趣的:(mysql)