儲存過程中用什麼可以替代游標

2021-07-31 12:55:15 字數 712 閱讀 7991

儲存過程**如下: create or replace procedure pd_p_visitplan_answer (skeyid varchar2, svpid varchar2, svpcmid ...展開

崔傳磊|瀏覽 1448 次

推薦於2016-05-17 20:31:19

最佳答案

mysql儲存過程優化——使用臨時表代替游標。

mysql游標在操作小資料量時比較方便,效率可觀,但操作大資料量,速度比較慢,甚至直接產生系統錯誤。

一般說來,當操作的資料超過1萬條時,就避免用游標吧。

為了測試游標效能,寫了下面乙個游標對idc_gather_info表中資料進行遍歷

下面是當表中資料分別為15萬、5萬、1萬時光標的表現:

1.資料量15萬,儲存過程執行失敗,提示錯誤:incorrect key file for table '/tmp/#sql_3044_0.myi';try to repair it

2.資料量5萬,執行成功,耗時31.051s

3.資料量1萬,執行成功,耗時1.371s

下面使用臨時表替換游標:

1.資料量15萬,執行成功,耗時8.928s

2.資料量5萬,執行成功,耗時2.994s

3.資料量1萬,執行成功,耗時0.634s

可以看到mysql的游標在處理大一點的資料量時還是比較乏力的,僅適合用於操作幾百上千的小資料量。

儲存過程中帶游標

create procedure updatetimeproperty surroundingrock nvarchar 200 ifclassname nvarchar 200 prop startstation nvarchar 200 prop endstatoin nvarchar 200 ...

儲存過程中的游標使用

利用儲存過程來消除資料庫中冗餘的資料 create procedure sp mytest as declare pro varchar 50 declare mm int declare wu cursor for select distinct product from mytest open ...

儲存過程中游標的使用

例如 乙個公司,按照如下規則計算加薪金額 1.公司中除了總裁 president 外,所有人都會至少增加p min的薪水 2.任何獎金 bonus 高於 600的員工都會另增加4 3.員工的佣金 commission 越高,增加越少。佣金 commission 少於 2000的另增加3 佣金 com...