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