前のページ|次のページ

IDXWHERE=データセットオプション

SPD EngineでのWHERE式処理時にインデックスを使用するかどうかを指定します。

該当要素: DATAステップおよびPROCステップ
デフォルト: YES
制限事項: WHERENOINDEX=オプションはIDXWHERE=NOオプションと一緒には使用不可
エンジン: SPD Engineのみ

構文

IDXWHERE=YES | NO

必須引数

YES

WHERE式の処理時にインデックスを使用します。

NO

WHERE式の処理時にインデックスを無視します。

制限事項 IDXWHERE=NOオプションとWHERENOINDEX=オプションを一緒に使用することはできません。

詳細

IDXWHERE=は、WHINITと呼ばれる、SPD EngineのWHERE式計画ソフトウェアで使用されます。WHINITでは、さまざまなアプリケーションにおけるWHERE処理でのインデックス使用のパフォーマンスがテストされます。SASシステムオプションMSGLEVEL=Iを設定し、WHERE処理情報がSASログに出力されるようにします。
IDXWHERE=データセットオプションおよびBYSORT=YESオプションを使用すると、SASログに次のメッセージが書き込まれます。
  • IDXWHERE=YESでBY変数にインデックスがある場合、テーブルの行の並べ替えにそのインデックスが使用されます。次のメッセージがSASログに書き込まれます。
    Note: BY ordering was produced by using an index for
    table tablename.
  • IDXWHERE=NOまたはIDXWHERE=YESで、BY変数にインデックスがない場合、SPD Engineで自動並べ替えが実行され、テーブルの行が並べ替えられます。次のメッセージがSASログに書き込まれます。
    Note: BY ordering was produced by performing an
    automatic sort on table tablename.
SPD Engineは、WHINIT (規則に基づくWHERE式プランナ)を使用して、最もクエリに適した評価方法を選択します。SASシステムオプションMSGLEVEL=Iによって、WHINITメッセージがSASログに出力されます。これは、1つ以上のインデックスがクエリで使用されるかどうかを決定するのに役立ちます。WHINITの詳細については、SPDEWHEVAL=システムオプションを参照してください。
注: WHEREステートメントとBYステートメントを一緒に使用する場合は、インデックスの使用を任意で抑制しないでください。WHEREステートメントでオブザベーションのフィルタ処理、BYステートメントでオブザベーションの並べ替えを行います。WHEREステートメントに適合する、フィルタ処理されたオブザベーションが、並列WHERE式評価の一部として並べ替えステップに直接取り込まれます。結果として、最終的に並べ替えられたオブザベーションセットが作成されます。WHERE処理でのインデックス使用によって、並べ替えステップでのフィルタ処理および取り込みのパフォーマンスが大幅に向上します。

例1: IDXWHERE=NOでWHINITログ出力を使用

この例では、IDXWHERE=NOが指定されたため、WHERE式で評価方法2が使用されます。
IDXWHERE=NO
34 options msglevel=i; 35 proc means data=permdata.customer(idxwhere=no); 36 var sales; 37 where state="CA"; 38 run; whinit:WHERE (sstate='CA') whinit returns:ALL EVAL2 NOTE:There were 2981 observations read from the data set PERMDATA.CUSTOMER.WHERE state='CA';

例2: IDXWHERE=YESでWHINITログ出力を使用

この例では、IDXWHERE=YESが指定されたため、評価方法1が使用されました。
IDXWHERE=YES
39 proc means data=permdata.customer(idxwhere=yes); 40 var sales; 41 where state="CA"; 42 run; whinit:WHERE (sstate='CA') -- whinit:SBM-INDEX STATE uses 45% of segs (WITHIN maxsegratio 75%) whinit returns:ALL EVAL1(w/SEGLIST) NOTE:There were 2981 observations read from the data set PERMDATA.CUSTOMER.WHERE state='CA';
前のページ|次のページ|ページの先頭へ