A SELECT
查詢在我的存儲過程中需要3秒在查詢的表沒有索引時執行。 均爲,執行查詢時Toad編輯器以及調用存儲過程時都是如此。 解釋計劃顯示全表掃描完成。存儲過程不使用表上的可用索引(Oracle)
當添加一個索引,在蟾蜍編輯返回相同的查詢結果瞬間(只是幾毫秒)。 解釋計劃顯示使用索引。但是,即使存在索引,查詢在存儲過程中仍然需要3秒。它看起來像查詢在存儲過程中執行時使用全表掃描,儘管有索引可加快速度。 爲什麼?
我已嘗試索引不同列與不同的順序。在所有情況下,相同的結果仍然存在。
在存儲過程中,使用BULK COLLECT INTO
收集查詢結果。這是否有所作爲? 另外,存儲過程位於包中。
查詢是一個非常簡單SELECT
聲明,就像這樣:
SELECT MY_COL, COUNT (MY_COL)
/* this line is only in stored proc */ BULK COLLECT INTO mycollection
FROM MY_TABLE
WHERE ANOTHER_COL = '123' /* or ANOTHER_COL = filterval (which is type NUMBER) */
GROUP BY MY_COL
ORDER BY MY_COL
** ** SHOW執行計劃後加入指數之前。要了解更多信息,請跟蹤會話併發布日誌詳細信息。 – 2014-10-20 08:55:13
我已經很好地總結了執行計劃的結果。該問題不會從顯示詳細輸出或其他日誌詳細信息中獲得任何其他信息。無論如何,我已經解決了這個問題。也不需要大喊':)' – ADTC 2014-10-20 09:32:53