关于 join 和 where 的性能问题

Yaka 2011-12-15 12:55:32
SQL 1
select a.*,b.,c.*,d.* from Table_A as a
inner join Table_B as b
on a.ID = b.ReferenceID
inner join Table_C as c
on b.ID = c.ReferenceID
inner join Table_D as d
on c.ID = d.ReferenceID
where a.SKU = '123456789'


SQL 2
select a.*,b.,c.*,d.* from Table_A as a
inner join Table_B as b
on a.ID = b.ReferenceID
and a.SKU = '123456789'
inner join Table_C as c
on b.ID = c.ReferenceID
inner join Table_D as d
on c.ID = d.ReferenceID

不考虑数据库设计的问题,两条SQL的性能更好?
看过一些书是说先join后where..这样的话...是不是SQL 2 比较好.?
各位看法如何..?



...全文
251 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
小红伞 2011-12-15
  • 打赏
  • 举报
回复
个人感觉是2好,在链表时就进行了条件过滤。比后过滤会强些?
期待优化高手的正解。
Yaka 2011-12-15
  • 打赏
  • 举报
回复
结贴散分~~
快溜 2011-12-15
  • 打赏
  • 举报
回复
ctrl+L 你看看执行计划
唐诗三百首 2011-12-15
  • 打赏
  • 举报
回复
一样的, 看执行计划.

sql引擎会自动帮你选择最优的执行计划.
gogodiy 2011-12-15
  • 打赏
  • 举报
回复
你可以看执行计划,在INNER JOIN的情况下,两句话是一样的。如果是LEFT JOIN或者RIGHT JOIN,完全是不同的结果集。
勿勿 2011-12-15
  • 打赏
  • 举报
回复
inner join和where一样

left join 没有可比性
pengxuan 2011-12-15
  • 打赏
  • 举报
回复
inner join和where一样
left join就不一样了
中国风 2011-12-15
  • 打赏
  • 举报
回复
看執行計劃應該是相同的,數據庫引擎會選擇最優的計劃

所以樓主不會出現以上不相同的情況


--小F-- 2011-12-15
  • 打赏
  • 举报
回复
都是INNER JOIN的话 一样的效率
-晴天 2011-12-15
  • 打赏
  • 举报
回复
inner join
没有区别.
left join
结果可能不一样.

因此没有可比性.

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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