连表查询,TiDB需要30多秒,在mysql只需要0.5秒,麻烦帮忙看下原因。

:+1:

full.sql (3.2 KB)

麻烦试下

full.sql (39.6 KB)
执行了下,1秒钟完成,速度快多了。:+1:
如果能大概介绍下调试过程和优化方式就更好了。学习学习,感谢感谢!

  1. 这里首先看了下 explain analyze 结果,看到慢在最内 3 层的 join 上 (m join d) join taskd
  2. 然后对比了下 mysql 的执行计划,发现 mysql 最内的 3 层的 join 是 (m join d) join taskm, 所以我就把这 4 张表单独提出来,把 2 种 join 顺序都让你试了下
  3. 然后发现修改顺序后,join 的时间能减少但是和 mysql 差距还是很大,因此又看了下,发现 taskd 上使用的索引不一样,所以使用了 use index 来强制走了下索引

综上,相对于原 sql ,做了 2 个优化

  • 把 taskd 和 taskm 在 sql 中换了个顺序
  • 给 taskd 加了个 use index 强制走指定索引

:+1::+1::+1:
非常感谢!!

这里提到的对几张表导出统计信息,能麻烦方便时候 analyze 后再导一份出来吗?我们看下对这个情况做下优化

stats.tar.gz (2.1 MB)

好的,谢谢

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。