2

フィールド「A」でソートされた大きなSASデータセットがあります。フィールド「A」と「B」を参照するクエリを実行したいと思います。パフォーマンスを高速化するために、「B」にインデックスを作成しました。これにより、役に立たないメッセージが表示されます。

INFO: Index B not used.  Sorting into index order may help.

もちろん、Bでソートすると役立ちます。しかし、それは重要ではありません。インデックスは、他のフィールドですでに並べ替えられている場合に使用します。

同様のクエリで、SASは次のメッセージを表示します。

INFO: Use of index C for WHERE clause optimization canceled.

SASにインデックスを使用させるためのヒントはありますか?あるケースでは、SASがインデックスを使用しないため、クエリの実行に2時間かかります。

4

2 に答える 2

3

クエリが十分に選択的でない場合 - ほとんどのソース レコードを結果に取得する場合、インデックスを使用してもパフォーマンスが向上せず、最終的に事態が悪化する可能性があります。これがおそらく、オプティマイザがインデックスを使用しないことにした理由です。

インデックスの使用を強制するには、IDXNAME データ セット オプションを使用してみてください (おそらく両方のテーブルで)。http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000414058.htmを参照してください。

クエリを確認し、データのいくつかの特性 (少なくとも入力テーブルのレコード数とクエリ結果の予想サイズ) を知らなければ、最適なアプローチを判断することは困難です。

とにかく、最適なパフォーマンスを得るには、テーブルを結合するときに、両方のテーブルを同様にインデックスにする必要があり、すべての結合キーがインデックスの一部である必要があります。

于 2012-05-23T13:07:13.170 に答える
0

実行しようとしているクエリを見ずに、このような質問に答えることはできません。インデックスは、SASオプティマイザがパフォーマンスを向上させると判断した場合にのみ役立ちます。実行したいコードの簡単な例を示していただけますか?

于 2012-05-21T21:35:52.010 に答える