6

ネストされたループ結合の内側のテーブルと見なされるテーブルを誰か教えてもらえますか? たとえば、クエリが の場合from a inner join b on...、どれが内部と見なされますかa? bであることは知っていましたが、 dbsophicbの記事から、十分にインデックス化された内部入力を使用した小さな外部ループの最初の例は、逆を示唆しているようです。

4

3 に答える 3

8

念のため...

  • 「INNERJOIN」は論理(リレーショナル)結合演算子です
  • 内部テーブルと外部テーブルは、物理的なネストされたループ結合演算子の概念です。

物理演算子の内部テーブルと外部テーブルの選択はオプティマイザーによって行われ、論理演算子とは関係ありません。

さて、ネストされたループの疑似コードはこれです

for each row R1 in the outer table
    for each row R2 in the inner table
        if R1 joins with R2
            return (R1, R2)

したがって、理論的には違いはありません。

実際には、オプティマイザーは内側と外側のテーブルを回避するための最良の方法を見つけ出します。これは、記事のリンクで説明する必要があります。別名、反復回数を減らす方法

完全を期すために...INNER JOIN論理演算子は可換で結合法則な
のでA INNER JOIN B、と同じB INNER JOIN Aです。
ここには内側と外側のテーブルはありません

于 2012-08-29T12:21:04.017 に答える
2

実際には、両方のテーブルがinner一致する場合、行のみが返されます。
外部結合を行うときは、どのテーブルを外部結合にするかを指定します。

  • 左外部結合: 最初のテーブルはすべての行が返されるテーブルで、2 番目のテーブルは一致する行のみが返されるテーブルです。
  • 右外部結合: 2 番目のテーブルはすべての行が返されるテーブルで、最初のテーブルは一致する行のみが返されるテーブルです。
  • 完全外部結合: 両方のテーブルのすべての行が返されます。
于 2012-08-29T12:16:21.647 に答える