7

テーブルの結合と複数のテーブルからの選択では、どちらが優れていますか?

たとえば、次のようなシナリオを想定してみましょう。

joinの使用:

SELECT COALESCE(SUM(SALARY),0) FROM X
JOIN Y ON X.X_ID=Y.Y_X_ID

また

複数のテーブルから選択する

SELECT COALESCE(SUM(SALARY),0) FROM X, Y
WHERE X.X_ID=Y.Y_X_ID
4

3 に答える 3

2

どちらもジョイントです。1 つ目は明示的な結合で、2 つ目は暗黙的な結合であり、SQL アンチパターンです。

偶発的なクロス結合が発生しやすいため、2 つ目は悪いです。また、クロス結合が必要な場合、それが必要なのか、偶発的なものがあるのか​​ が明確でないため、これも悪いことです。

さらに 2 番目のスタイルでは、外部結合に変換する必要がある場合は、クエリ内のすべての結合を変更する必要があります。変更しないと、正しくない結果が得られるリスクがあります。したがって、2 番目のスタイルは維持するのが難しくなります。

明示的な結合は前世紀に制定されました。エラーが発生しやすく、暗黙的な結合を維持するのが難しい人がいまだに使用されている理由は、私には理解できません。

于 2013-04-01T20:15:27.153 に答える
1

hereで見つけることができる多くの理由で、 JOIN構文を使用する必要があります。

さらに、この構文には、クエリ オプティマイザーにいくつかのヒントを与えるという利点があります (重みの計算中に、この構文で言及された事実によって直接計算された重みは、他のものよりも有利に重み付けされます)。

于 2013-04-01T18:37:33.167 に答える