2011-01-30 13 views
9

私は同僚との議論をしています。内側結合が内側結合で指定されているという事実のために、内部結合が自然結合より速いかどうかという点について悩まされています。したがって、SQLエンジンは、共通の列を決定するためにテーブル構造を比較する必要はありません。インナー結合とナチュラル結合は、スピードワイズですか?

あなたのご意見/ご感想をお寄せください。

答えて

8

これはDBMSに依存し、ある程度は結合されたテーブルに依存することになりますが、その違いは一般的には測定できません。 INNER JOINを使用すると、共通の列が2つコピーされます。 NATURAL JOINを使用すると、共通の列が1つだけコピーされます。

中間結果をディスクに書き込むかソートする必要がある場合は、管理するデータが増え、クライアントとサーバーの接続でクライアントに返されるデータが少し増えるため、INNER JOINはNATURAL JOINよりも少し時間がかかります。共通の列が十分に大きい場合、たとえば、長い文字フィールドの場合、このサイズの違いは重要な意味を持つ可能性があります。

2つのタイプの結合を準備する時間の差は、まったく無視できます。どちらも、結合に関係する両方のテーブルのすべての列の情報を読み取る必要があり、そのデータの処理は実質的に似ています。

実行中、中間結果を形成するためのデータのコピーは、NATURAL JOINの方が少し複雑かもしれません。各行のコピーを取るだけではないためですが、必ずしも完全なコピーINNER JOINの各行のいずれかに格納されるので、その差は無視してもかまいません。以前と同じように、NATURAL JOINのために集計されるデータはわずかに少なくなっているので、それにはまだ小さな利点があります。

全体的に、NATURAL JOINはINNER JOINよりもわずかに速いかもしれませんが、その差はまだごくわずかです。

+0

以上です。違いはテーブル構造情報を見ることには関係ありません。 – siride

+1

@サイード:確かに、はい。私が指摘したように、「準備時間コストは完全に無視できる」(準備プロセスは、両方のテーブルに関連するすべてのデータを参照する必要があるため)。 –

+0

私はより密接に読むべきです: - / – siride

1

例外的に、自然な結合は、内部結合ほど高速である可能性があります。

2

私は、あなたがその仮説を支持することができる共通の列を見つけるのは非常に高価だとは思いません。

+0

デザインによって自然な結合に依存する可能性が高いのは、キー(「インデックス」など)が不要なことです。実際のキーを使わずに内部結合を行うことはできますが、非常にまれで、明らかに間違っているのは – stefan

関連する問題