2017-04-01 11 views
0

Plz mssqlの2つのクエリの間に何が良いか教えてください。WITHステートメントまたはleft join 3 tables?

;with ab as (select a.*,b.CategoryName from Products a 
left join Categories b on a.CategoryID = b.CategoryID where b.CategoryID = 2) 
select * from ab left join Suppliers c on ab.SupplierID = c.SupplierID 

または

select * from Products a left join Categories b on a.CategoryID = b.CategoryID 
left join Suppliers c on a.SupplierID = c.SupplierID 
where b.CategoryID = 2 
+0

をEXPLAINでテストすることができ

は、コードを読みやすくするための唯一の助けを借りて、同じです。 –

+0

通知する情報が不十分です。両方をテストしなければならないでしょうし、 "良い"は主観的です。私は個人的に2つの左の結合で2番目を行います。非常に複雑なクエリでは、データを事前にマテリアライズしてメンテナンスを簡素化しています。 – xQbert

+1

それらを比較する最善の方法は、実行計画を比較することです:http://stackoverflow.com/a/7359705。クエリ・オプティマイザがクエリをどのように実行するかを正確に教えてくれます。 – aschmied

答えて