SQLの結合もインデックスを参照することで効率化

SQLを先に修められた方からすると、当たり前なのかもしれませんが、、

options msglevel=i;
data Q1(index=(XY=(X Y)));
do X=1 to 10;
 do Y='A','B','C';
  output;
 end;
end;
run;

data Q2(index=(XY=(X Y)));
 X=1;Y='C';Z=100;output;
 X=6;Y='A';Z=200;output;
 X=8;Y='B';Z=300;output;
 X=9;Y='D';Z=400;output;
run;

proc sql noprint;
 create table A1 as
 select Q1.X,Q1.Y
 from Q1 inner join Q2 on Q1.X=Q2.X and Q1.Y=Q2.Y
;
quit;

を実行するとログは


となり、結合にインデックスが利用されていることがわかります。
joinも、内部的には直積からの抽出なのでwhere句と同じ扱いということですよね??



0 件のコメント:

コメントを投稿