1. oracle存儲過程執行速度很慢是什麼原因
解決辦法:你需要對你的表根據查詢條件設計相應的索引,有時候根據需要可能一個表你需要建立好幾個索引都是有可能的。然後再執行,你會發現原來要30幾秒的現在零點幾秒就可以搞定了,這跟使用游標沒什麼關系。游標的使用完全由你的應用需要決定,我相信能不用的你肯定不會選擇使用游標處理,一般是實在沒辦法的情況下才選擇游標去做。 你查詢慢的原因是你在存儲過程中執行的話,沒有索引時,他會一條一條查知道把80幾萬條數據全部掃描一遍直到查完了你才看到一個結果,但是你在外面單獨執行很快的原因是plsql他會首先去查查到幾條數據就先給你返回來,所以你馬上就看到結果了,但實際上查詢也並沒有結束,你要是數據很多的情況下你往下拉,你會發信很慢,其實查詢過程根本就還沒有結束。 總之寫存儲過程第一步是會寫,第二步是要做好優化,否則當你的數據量很大的時候你的過程寫的不好的話問題會馬上暴露出來
2. plsql存儲過程,執行失敗,但是重新編譯就能執行成功,什麼原因
可能你修改了與該存儲過程相關的數據表之類的對象,修改了之後,就會導致對應存儲過程失效
3. 存儲過程第一次執行耗時30分鍾,第二次開始每次耗時不到3分鍾,這是什麼原因
sql是高級語言,資料庫系統執行sql之前要將sql語句進行解析(相當於編譯),這個過程叫硬解析;資料庫系統每次執行sql之前都會檢查共享池中是不是存在已經解析過的語句,如果有就拿來直接用,這叫軟結息。軟解析比硬解析效率高,這是影響因素之一;
二、第一次執行可能沒有走索引,第二次執行使用第一次執行的執行計劃
三、看你的存儲過程做了些什麼,有可能第一次把活幹完了,導致第二次執行沒什麼活干
以上回答基於oracle體系結構
4. Oracle 定義存儲過程 不能執行,處於無效狀態。
無效狀態有兩種可能:
1、一種是你的存儲過程編輯沒有成功,創建了,但裡面有語法錯誤。