存储过程中用什么可以替代游标

存储过程中用什么可以替代游标 20

存储过程代码如下: 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的游标在处理大一点的数据量时还是比较乏力的,仅适合用于操作几百上千的小数据量。