[英]Do SQL Server subqueries cause performance loss?
我用內部連接連接了 2 個表,但是 2 個表有同名的列。 我將查詢設為子查詢以僅使用所需的列。 如果我使用子查詢會導致速度下降嗎?
注意:我使用了翻譯
Select
*
From
(Select
t1.Id, ...
From
Table1 as t1
left join
Table2 as t2 on t1.Id = t2.ParentId
--Where
--Id = 123 This Line. Error : Ambiguous column name 'Id'.
) as Foo
where
Id = 123
不需要子查詢。 您可以通過在列前加上它所屬的表來解決歧義:
select t1.Id, ...
from Table1 as t1
left join Table2 as t2 on t2.ParentId = t1.Id
where t1.Id = 123 -- presumably
至於您的原始查詢:在這里使用子查詢會影響性能嗎? 我希望像 SQL 服務器這樣的數據庫能夠預見將謂詞推送到子查詢的明顯優化。 但是您需要比較執行計划以確保。
請注意,如果您確實需要子查詢,通常最好預先過濾:
select t1.Id, ...
from (select * from Table1 where Id = 123) as t1
left join Table2 as t2 on t2.ParentId = t1.Id
在您的查詢中,包含where 條件的最后一行給出 ID 的別名,它將避免歧義錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.