我必須在兩個父 - 子關係(1:n)表中搜索,但在結果集中,我只需要父表的字段。什麼是最有意義的方式來做到這一點?它是以下簡化結構之一...SQL Server:從兩個表獲取數據的高性能方式
SELECT parent.fields FROM parent LEFT OUTER JOIN child ON [JoinExpr]
Where [ParentFilter] OR [ChildFilter] GROUP BY parent.fields
SELECT DISTINCT(parent.fields) FROM parent LEFT OUTER JOIN child ON [JoinExpr]
Where [ParentFilter] OR [ChildFilter]
SELECT parent.fields FROM parent Where [ParentFilter]
OR parent_id IN(SELECT parent_id FROM child WHERE [ChildFilter])
......還是有其他更好的可能性嗎?數據將由ado.net查詢。
答案可能取決於您在每個表中有多少行...... JOIN的傾向於比大型數據集更好地執行(取決於索引順序和其他因素) , WHERE EXISTS可能對小數據集執行略微更好 – 2011-01-07 09:23:04
@neil fenwick:您能否證明,考慮到事實上您可能需要DISTINCT加入? – gbn 2011-01-07 09:26:45
@Neil Fenwick:可能有很多行返回(幾千),但在大多數情況下,只有少數(10到200) – HCL 2011-01-07 09:43:53