1
 SELECT * FROM dbo.table1, 
 dbo.table2 AS T2,
 dbo.table3 AS T3, 
 dbo.table4 AS T4
 WHERE dbo.table1.ID = T2.ID 
 AND T2.ID = T3.ID 
 AND T3.ID = T4.ID 

(また)

SELECT 
* 
FROM dbo.table1 T1 
INNER JOIN dbo.table2 T2 ON T1.ID = T2.ID 
INNER JOIN dbo.table3 T3 ON T2.ID = T3.ID 
INNER JOIN dbo.table4 T4 ON T3.ID = T4.ID 
4

4 に答える 4

2

どちらにも違いはありません。「カンマ結合」は避けた方がよいでしょう。a) ANSI 結合構文はより表現力があり、LEFT JOIN にとにかくそれを使用することになり、スタイルを混在させると問題が生じるため、同様に、1 つのスタイルを使用するだけです。b) ANSI スタイルがより明確になりました。

于 2013-10-10T06:33:04.187 に答える
0

上記のどちらの場合でも、SQL エンジンがバックグラウンドで実行する方法に違いはありません。パフォーマンスに影響を与える唯一のことは、結合の場合は列を結合する際のインデックスがどれほど効果的であるか、カンマ区切りのテーブル名の場合は where 句です。

したがって、適切なインデックス、統計が更新されていることを確認してください。

もう 1 つ重要なことは、select "*" を使用していることです。可能であれば、関心のある列のみを使用してみてください。

于 2013-10-10T06:52:56.557 に答える
0

どちらも結合であり、最初は暗黙的で、前の回答で指摘されたようにクロス結合を実行します。後者は明示的な内部結合の概念です。パフォーマンスの面で違いはありませんが。

于 2013-10-10T06:55:06.993 に答える