SASインデックスを作成するべきかというのは、データと実行したい処理に依存するので一概に
判断できません。以下のドキュメントに詳細があるので役立つかと思います。
SAS 9.4 言語リファレンス:解説編 第4版
p632. SASインデックスについて
インデックスが利用されるのはDATAステップであればWHEREやBYステートメントですので、
これらに指定する変数に対し作成を検討すべきであると思います。通常インデックスを作成
した変数でソートする必要はありません。
複合インデックスはご認識の通り複数の変数による条件に対し利用されます。しかし少なく
とも一つのEQかIN演算子が必要などの制約があります。なお条件が一つでも、インデックス
作成時に最初に指定した変数であれば使用されます。
options msglevel=i;
data test(index=(xy=(x y)));
call streaminit(123);
do i=1 to 100;
x=rand('poisson',10);
y=rand('poisson',10);
output;
end;
run;
data test2;
set test;
where x=10 and y=10;
run;
data test3;
set test;
where x=10;
run;
/* 使われない */
data test4;
set test;
where y=10;
run;
SETやUPDATEステートメントは出力データセットを同名にしても、同名のデータセットを
新規で作成し置き換えているだけですので、インデックスは保持されません。編集する場合
MODIFYを使います。
インデックス全般について、少し古いものですが以下のPaperも参考になるかと思います。
Frequently Asked Questions about SAS® Indexes