【发布时间】:2017-11-07 22:30:17
【问题描述】:
错序操作是否存在性能问题?
喜欢 1.先全部Inner join,再全部where条件。
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。所有表都有各自的 Where 和 Inner join
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)
【问题讨论】:
-
你测试了吗?你得到了什么作为指标?哪个跑得更快?
-
是的,我用少量记录测试了它。也尝试了许多记录,但我没有得到很大的不同。
-
阅读关系和 DBMS 特定查询优化/实现的介绍,尽可能编写最直接的查询,直到您有更多经验。然后阅读整本书。这些查询都经过简单优化。如果您阅读过一些关于简单查询优化的数不胜数的问题,您会发现它们都值得同样的评论,即相同的答案,在下面重复。在你定义你的意思之前,工程中没有“最好”。
标签: sql sql-server stored-procedures rdbms