IDXWHERE= テーブルオプション
SASがWHERE句の条件に一致するためにインデックス検索と順次検索のどちらを使用するかを指定します。
| カテゴリ: | SASインデックス使用のユーザーコントロール |
|---|---|
| 制限事項: | このテーブルオプションは、CASサーバーではサポートされていません。 |
| 入力データセットでのみ使用します。 | |
| SASデータセット: IDXNAME=では使用できません。 | |
| SPD Engineデータセット: IDXWHERE=NOはWHERENOINDEX=では使用できません。 | |
| データソース: | SASデータセット、SPD Engineデータセット |
構文
引数
YES
最適なインデックスを選択してWHERE句を最適化し、データセットの順次検索の方がリソース効率が高い可能性を無視するようSASに指示します。これがデフォルト値です。
NO
すべてのインデックスを無視し、データセットの順次検索でWHERE句の条件を満たすようにSASに指示します。
| 注 | IDXWHERE=テーブルオプションを使用して、BYステートメントを処理するためのインデックスの使用をオーバーライドすることはできません。 |
|---|---|
| IDXWHERE=NOが使用されている場合、WHERENOINDEX=テーブルオプションは使用できません。 |
詳細
デフォルトでは、インデックス付きデータセットのWHERE句の条件を満たすために、インデックスを使用するか、データセットを順次読み取るかがソフトウェアによって決定されます。ソフトウェアは相対的な効率を推定し、より効率的な方法を選択します。
IDXWHERE=テーブルオプションを指定して、ソフトウェアの決定をオーバーライドする必要がある場合があります。決定は、最良の結果が得られない場合がある一般的な規則に基づいているためです。つまり、IDXWHERE=テーブルオプションを指定することで、処理方法を決定することができます。
比較
IDXNAME=テーブルオプション(SASデータセットでのみサポート)を使用すると、SASに特定のインデックスを使用するように指示できます。
WHERENOINDEX=テーブルオプションを使用すると、WHERE式の評価を行うときに除外するインデックスのリストを指定できます。
例
例1: インデックス使用の指定
この例では、IDXWHERE=テーブルオプションを使用して、WHERE句を最適化するのに最適なインデックスを決定するようSASに指示します。次に、SASは、データセットの順次検索の方がリソース効率が高い可能性を無視します。
create table mydata.empnew
as select * from mydata.employee {option idxwhere=yes}
where empnum < 2000;
例2: インデックス使用なしの指定
この例では、IDXWHERE=テーブルオプションを使用して、インデックスを無視し、データセットの順次検索でWHERE句の条件を満たすようにSASに指示します。
create table mydata.empnew
as select * from mydata.employee {option idxwhere=no}
where empnum < 2000;
関連項目
-
テーブルオプション: