[英]Order of operation Inner Join and Where clause performance in SQL Server?
在按错过顺序使用操作时是否存在任何性能问题?
如图1。所有内部成员先加入,然后所有条件加入。
select * from
t1
inner join t2 on t1.t2Id = t2.Id
inner join t3 on t1.t3Id = t3.Id
inner join t4 on t2.t4Id = t4.Id
where
t1.Id in (1,2,3,4,5)
and t2.Id in (1,2,3,4,5,6,7)
and t3.Name like '%a'
2.所有表分别带有“何处”和“内部”联接
select * from
(select * from t1 where t1.Id in (1,2,3,4,5)) a
inner join (select * from t2 where t2.Id in (1,2,3,4,5,6,7)) a1 on a.t2Id =
a.Id
inner join (select * from t3 where t3.Name like '%a') a2 on a.t3Id = a2.Id
inner join t4 on a1.t4Id = t4.Id
它可能会影响查询性能吗?
还订购何处条件?
喜欢
select * from t1 inner join t2 on t1.t2Id = t2.Id where t1.t2Id in (1,2,3,4,5,6) and t2.t3Id in (1,2,3,4,5)
SQL查询在运行时会经历三个阶段:
作为优化的结果,编写查询的方式通常对性能的影响比您想象的要小。 很多人都在努力寻找优化查询的最佳方法,这很辛苦-可能还有很多您甚至不知道的事情(例如不同的联接算法,联接顺序,下推表达式求值等等) )。
对于您的示例,SQL Server优化器应产生相同的执行计划。 引擎足够聪明,可以意识到它们确实在做同样的事情。
注意:并非所有查询引擎都适用。 有些优化器的性能很差,性能会有差异。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.