SQL 的 AND 问题

好奇都是要学的 2019-03-13 04:34:27
我很好奇 AND 前半段参数不对 后半段 还走吗?

比如 select * from a where 1=2 and 1=1 , 在 1=2的时候 已经取不到值的时候, 还会走1=1吗?

或者说

select * from ShopSpec a
left join ShopImg b on a.SpecNo=b.ShopNo and b.ImgNo is not null



select * from ShopSpec a
left join ShopImg b on b.ImgNo is not null and a.SpecNo=b.ShopNo 一样吗?

如果前面为假 后面不走 , 在关联的时候, 把B表的条件写前面, 关联写后面 是不是会省点时间。 因为B表图片为空就算关联上了也没用。
...全文
466 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 9 楼 qq_38039130 的回复:
[quote=引用 6 楼 好奇都是要学的的回复:]还是没给出明确的答复啊。 我是想问 left join ShopImg b on a.SpecNo=b.ShopNo and b.ImgNo is not null 和 left join ShopImg b on b.ImgNo is not null and a.SpecNo=b.ShopNo 一样吗?
这两个是计算是不一样,如果前面满足继续下一步,如果前面不满足停止计算。and是一个为false都为false?[/quote] 这2个 不一样
MonkeyHou0529 2019-03-22
  • 打赏
  • 举报
回复
引用 6 楼 好奇都是要学的的回复:
还是没给出明确的答复啊。 我是想问 left join ShopImg b on a.SpecNo=b.ShopNo and b.ImgNo is not null 和 left join ShopImg b on b.ImgNo is not null and a.SpecNo=b.ShopNo 一样吗?
这两个是计算是不一样,如果前面满足继续下一步,如果前面不满足停止计算。and是一个为false都为false?
竞天问 2019-03-19
  • 打赏
  • 举报
回复
据数据库老师讲,到底怎么执行要看SQL编译器级优化器的具体实现,谁跟谁可能都不一样,这里边水深了去了。
布尔操作的短路是其中最简单的一种,其它的有内外查询,各种索引的情况,我都还给老师了
-狙击手- 2019-03-16
  • 打赏
  • 举报
回复
应该是差别的,根据你的搜索条件、索引情况、数据大小才能分析
  • 打赏
  • 举报
回复
还是没给出明确的答复啊。 我是想问 left join ShopImg b on a.SpecNo=b.ShopNo and b.ImgNo is not null 和 left join ShopImg b on b.ImgNo is not null and a.SpecNo=b.ShopNo 一样吗?
Dear SQL(燊) 2019-03-14
  • 打赏
  • 举报
回复
SQL优化器会选一个“最优的执行方案”
Dear SQL(燊) 2019-03-14
  • 打赏
  • 举报
回复
你写条件放前或放后不一定起作用,最终要看SQL优化器怎么执行SQL
元气皮皮 2019-03-14
  • 打赏
  • 举报
回复
where语句的条件中是这样的,但是左连接语句实际运用中好像是一样的,你可以在具体使用中再看一下
  • 打赏
  • 举报
回复
引用 1 楼 元气皮皮 的回复:
判断and时,如果前面的不符合就直接跳过了执行下一条,不会执行后面的条件,判断or时,如果前面的符合就直接跳过了执行下一条,所以sql中,一般在and条件中把符合比例最低的条件放在最前面,而or则相反。
那也就是说 在 left join b 的时候 先写 条件 b.姓名='' 然后 在写 A.ID=B.ID 更好了
元气皮皮 2019-03-13
  • 打赏
  • 举报
回复
判断and时,如果前面的不符合就直接跳过了执行下一条,不会执行后面的条件,判断or时,如果前面的符合就直接跳过了执行下一条,所以sql中,一般在and条件中把符合比例最低的条件放在最前面,而or则相反。

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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