条件删除数据慢的问题(mysql)

XxiaoxiaoL 2015-05-26 11:16:48
SET autocommit=0;
DROP PROCEDURE IF EXISTS deleteTransfer1Scheme;
CREATE PROCEDURE deleteTransfer1Scheme()
BEGIN
DECLARE foriginStationId varchar(36);
DECLARE fterminalStationId varchar(36);
DECLARE fstationCount INT;
DECLARE num INT DEFAULT 0;

DECLARE rs_cursor CURSOR FOR SELECT originStationId,terminalStationId,MIN(stationCount) + 3 stationCount FROM tb_bus_scheme_286 WHERE transferCount=1 GROUP BY originStationId, terminalStationId;
OPEN rs_cursor;
cursor_loop:LOOP
FETCH rs_cursor INTO foriginStationId, fterminalStationId, fstationCount;
delete from tb_bus_scheme_286 where originStationId=foriginStationId AND terminalStationId=fterminalStationId AND stationCount=fstationCount;
if num=1000 then
commit;
SET num = 0;
else
SET num = num + 1;
end if;
END LOOP cursor_loop;
commit;
CLOSE rs_cursor;
END

CALL deleteTransfer1Scheme();

请问有优化的地方吗,或者条件删除大量数据的好的思路?
...全文
345 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
XxiaoxiaoL 2015-05-26
  • 打赏
  • 举报
回复
引用 1 楼 WWWWA 的回复:
举例说明要达到什么目的
一张表里面,originStationId,terminalStationId, stationCount三个字段。根据originStationId,terminalStationId分组,获得最小的stationCount,然后删除同组的比最小stationCount大3的所有数据
WWWWA 2015-05-26
  • 打赏
  • 举报
回复
举例说明要达到什么目的
XxiaoxiaoL 2015-05-26
  • 打赏
  • 举报
回复
,顶!!

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧