親子関係(1:n)にある2つのテーブルを検索する必要がありますが、結果セットでは親テーブルのフィールドのみが必要です。これを行う最も意味のある方法は何ですか?それは次の簡単な構成の1つですか...SQL Server:2つのテーブルからデータを取得する実行方法
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])
...他にも、より良い可能性がありますか?データはAD.netによって照会されます。
答えはたぶん各テーブルにいくつの行があるかによって決まります... JOINは索引の順序やその他の要素によってはパフォーマンスが向上しますが、 、 小さなデータセットでは、EXISTSがわずかに改善されます。 –
@neil fenwick:JOINでDISTINCTが必要な場合があることを証明できますか? – gbn
@Neil Fenwick:潜在的に、多くの行が返されます(数千)が、ほとんどの場合、わずか数(10〜200)です。 – HCL