mysql innodb如何判断缓冲池在多大程度上影响了sql的执行效率?

背景是这样的,有一条mysql的慢查询, 使用join本地要跑20多秒,使用left join本地跑了2秒,但是拿去线上环境去测试,发现join反而只需要7秒,而left join 需要11秒,线下的环境也是生产环境的数据,只是比较旧,因此我很费解这个结果, 我认为是线上的数据库缓冲池中已经缓冲了大部分页数据,而本地没有导致的问题,
请问各位大神,我应该怎么去思考这个问题,找到问题的差异?

阅读 3.1k
2 个回答

这种情况基本可以忽略缓冲池影响
你要看下具体执行计划有哪里不一样
表的统计信息是否准确也会影响执行计划
还有数据的分布情况也会极大的影响sql的执行效率
所以你可以同步一下数据再看看区别

你在测试的时候加SQL_NO_CACHE试试?这就不会使用innodb的数据缓存了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题