2017-03-10 64 views
0

我要查詢遷移到存儲過程,我也得到TAF(表訪問完整版),我想獲得更好的性能創建索引,我旁邊:創建索引以降低數據庫中的成本?

CREATE INDEX MY_INDEX2 ON OWNER.TABLE_NAME(FIELD); 

我也得到下一個:

INDEX_NAME  UNIQUE LOGGING DEGREE COLUM_NAME ORDER POSITION INDEX_OWNER 
MY_INDEX  Y  NO  1  MY_FIELD Asc  1   MY_OWNER 
MY_INDEX2  N  YES  1  MY_FIELD1 Asc  1   MY_OWNER 

任何知道如何將MY_INDEX2的位置更改爲2?

我的MY_INDEX2有多好? 例如,添加不同的順序並使用位圖索引。

任何解釋我什麼意思度?

謝謝!

+0

您意識到索引並不一定意味着在所有查詢中都可以避免使用表訪問權限,對吧?如果一個查詢需要處理大量的行(比如表中所有行的70%以上),那麼檢索所有行並忽略那些不需要的行會更有效率,訪問的索引。確保你不添加不必要的索引,因爲他們有成本,他們不僅有好處。 – mathguy

+0

要擴大@ mathguy的答案;這都是關於成本的。優化器將評估不同的執行計劃,並選擇成本最低的執行計劃。它從哪裏獲得成本?統計!。因此,爲您查詢執行計劃並讓我們看看優化器的想法。執行此操作:alter session set statistics_level = ALL;然後運行您的查詢。然後從表中獲取select *的輸出(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST')) – BobC

回答

1

爲了回答您的具體問題......

任何知道MY_INDEX2的2如何改變位置?

索引沒有位置。但是,索引中的列有一個位置。在單列索引中,它將是位置1.對於複合索引,位置表示索引中列的順序。

我的MY_INDEX2有多好?例如,添加不同的順序並使用位圖索引 。

您的績效指數有多好?這可能不會更好。這完全取決於您的數據和數據模型。檢查你的解釋計劃。創建新的索引。重新檢查你的解釋計劃。還有更多,但開始。僅在數據未更改的數據倉庫/報告環境中使用位圖索引。

還有任何解釋我什麼意思的程度?

您可以爲索引指定一定的並行度。等級1等於NOPARALLEL。在數據庫中理解並行性之前,請將它保持爲NOPARALLEL。