开发者社区> 问答> 正文

sqlserver left join 执行计划?报错

因为数据问题第二个会报错。数据问题没什么,主要是有一个疑问的地方,所以看了一下执行计划。两个查询语句只是把主表和join表的位置换了一下。(第一个图是的查询语句是不会报错的,但是不知道为什么没有查询链接的表,也没有执行hash匹配)。

真的不是很懂,希望大神门指点,谢谢了!

展开
收起
爱吃鱼的程序员 2020-06-22 19:39:13 573 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    LZ,首先你这两个执行计划写的SQL语句存在不同的地方。LEFTJOIN是以左边的表为基础表的。

    至于所说的【所以看了一下执行计划。两个查询语句只是把主表和join表的位置换了一下。(第一个图是的查询语句是不会报错的,但是不知道为什么没有查询链接的表,也没有执行hash匹配)。】

    个人认为应该是左右两边的数据数量不同和SELECT中显示的列名存在差异。如果改成

    select*fromaleftjoinbona.id=b.id 和select*frombleftjoinaona.id=b.id那么两者的执行计划则完全相同了。

    不知道是否正确,如有问题欢迎指正!

    2020-06-22 19:39:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PolarDB NL2SQL: 帮助您写出准确、优化的SQL 立即下载
Spark SQL 2.0/2.1 Experiences 立即下载
GeoMesa on Spark SQL 立即下载