2014-09-30 59 views
1

我已經在日期列的每月基礎上對錶進行了分區。 我也紛紛上表中的索引從全球到地方分區表上的本地索引不被使用

現在, 查詢是一直用它來選擇數據從該表中的分區表和創建本地索引然後再前往索引範圍掃描。但是相同的查詢將在更改後進行全表掃描。 這裏要提到的是,我在表的同一列有索引和分區鍵。

有人可以請建議可能是什麼問題。

查詢:

變化後
OPERATION   OPTIONS 
SELECT STATEMENT  
FILTER 
TABLE ACCESS  BY INDEX ROWID 
INDEX    RANGE SCAN 

高管計劃:改變前

SELECT * FROM USER.LOAN_BORROW 
WHERE CALENDAR_DT = '25-SEP-2014' 

高管計劃

​​3210

可能是什麼原因,如果分區鍵與本地索引在表格的同一列上,那麼數據欄需要更多時間?爲什麼它在這種情況下不使用本地索引?是否還有任何隱藏的內置索引與分配鍵一起使用,哪個oracle使用本地索引?

回答

1

它看起來像表是由同一列分區。在這種情況下,最好使用FILL SCAN掃描一個分區的所有行,而不是從一個索引分區讀取每一行,然後通過rowid讀取整個表格塊。如果你有一些列的分區,通常你不需要索引它(除非你創建本地唯一的組合索引)。

+0

感謝您的即時輸入。但分區後的查詢是分割前的兩倍。如果我使用索引提示強制使用索引,我可以在執行計劃中看到chnage,它使用索引。任何想法,如果這個提示可能有助於減少執行時間。 (PS - 代碼仍未被推送到更高的環境) – 2014-09-30 11:25:22

-1

我仍然在這個問題上請。

如果分區鍵和本地索引位於表的同一列,那麼數據加載需要更多時間的原因是什麼? 爲什麼它在這種情況下不使用本地索引? 是否有任何隱藏的內置索引與分區鍵一起使用,哪個oracle用來代替本地索引?

+0

您應該修改您的問題,而不是將問題添加爲答案。它有助於保持組織的有序性,並且還會碰到問題並獲得更多關注。 – 2014-10-06 17:58:50