2012-05-21 56 views
2

我有一個大的SAS數據集按字段'A'排序。我想要做一個引用字段'A'和'B'的查詢。爲了加快性能,我在'B'上創建了一個索引。這導致無益的消息:爲什麼SAS沒有使用我的索引?

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

當然,對B的排序會有所幫助。但那不是重點。索引是針對您已經在其他字段上排序的情況。

在一個類似的查詢,SAS給出了這樣的消息:

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

在得到SAS用我的索引有什麼建議?在一種情況下,查詢需要2小時才能運行,因爲SAS不使用索引。

+0

表中有多少觀察值,索引列上的基數是多少? –

回答

0

如果沒有看到您嘗試運行的查詢,就無法回答這樣的問題。只有SAS優化器確定它會提高性能時,索引纔會有用。你能舉一個你想運行的代碼的簡單例子嗎?

3

如果查詢的選擇性不夠 - 將大部分源記錄帶到結果中,索引的使用可能無助於性能,最終會使情況更糟。這可能是爲什麼優化器希望不使用索引。

強制使用索引嘗試使用IDXNAME數據集選項(可能在兩個表上)。 請參閱http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000414058.htm

沒有看到查詢並知道數據的某些特徵(至少記錄了輸入表和預期的查詢結果大小),很難說明最佳方法。

無論如何,爲了獲得最佳性能,當連接表時,兩個表都需要具有相似的索引,並且所有連接鍵都需要成爲索引的一部分。

相關問題