背景是这样的,有一条mysql的慢查询, 使用join本地要跑20多秒,使用left join本地跑了2秒,但是拿去线上环境去测试,发现join反而只需要7秒,而left join 需要11秒,线下的环境也是生产环境的数据,只是比较旧,因此我很费解这个结果, 我认为是线上的数据库缓冲池中已经缓冲了大部分页数据,而本地没有导致的问题,
请问各位大神,我应该怎么去思考这个问题,找到问题的差异?
背景是这样的,有一条mysql的慢查询, 使用join本地要跑20多秒,使用left join本地跑了2秒,但是拿去线上环境去测试,发现join反而只需要7秒,而left join 需要11秒,线下的环境也是生产环境的数据,只是比较旧,因此我很费解这个结果, 我认为是线上的数据库缓冲池中已经缓冲了大部分页数据,而本地没有导致的问题,
请问各位大神,我应该怎么去思考这个问题,找到问题的差异?
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
3 回答2k 阅读
这种情况基本可以忽略缓冲池影响
你要看下具体执行计划有哪里不一样
表的统计信息是否准确也会影响执行计划
还有数据的分布情况也会极大的影响sql的执行效率
所以你可以同步一下数据再看看区别