mysql 多表查询 left join 性能下降问题的疑问

王能 2020-01-09 11:27:17
经常有人说多表联查会浪费很多的性能和cpu
原因是联查时是先执行left join然后再执行where语句,这样生成的临时表数据会很大
但我测试下来发现并不是预想的那样...

SELECT os.id,app.id,oi.id,oo.id FROM osx as os
LEFT JOIN appx as app ON app.id = os.app_id
LEFT JOIN oix as oi ON oi.order_sn=os.order_sn
LEFT JOIN oox as oo ON oo.order_sn=os.order_sn
WHERE os.od_id BETWEEN 100 AND 110

如上查10条数据,执行时间0.01秒

其中osx/oix/oox的数据量均在100w条以上,如果按照先left join的套路,怎么也得是按秒来的吧?
是我哪里理解错了吗?
...全文
460 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2020-01-09
  • 打赏
  • 举报
回复
os 这个表先查出来, 放到临时表, 再与其它表连接。 余下就随便你玩了。
吉普赛的歌 2020-01-09
  • 打赏
  • 举报
回复
os 这个表先查出来, 放到临时表, 再与其它表连接。 余下就随便你玩了。
sxq129601 2020-01-09
  • 打赏
  • 举报
回复
mysql join查询会很慢,因为在8之前是没有hash join, 建议改换写法。
Hello World, 2020-01-09
  • 打赏
  • 举报
回复
肯定不会先联合生成一个巨大的表再筛选的,可以了解下查询过程相关的介绍

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧