大表批量删除1000行存储过程

简介:

对于像这样的删除,还是按照我们默认的规则,在量很大的情况下,分批次删除是最快的,加limit 1000(推荐的参考值,可变),加入循环中处理,要比一下子删除快很多很多。

 

执行call RUS_CommonFriend_delete_1k(用户ID);
 
默认删除1000行,然后休眠3秒,再轮训,直到把检索的行全删除。
 
 
DELIMITER $$
 
USE RUSDB$$
 
DROP PROCEDURE IF EXISTS RUS_CommonFriend_delete_1k$$
 
CREATE PROCEDURE RUS_CommonFriend_delete_1k(IN v_smalluserid INT)
 
BEGIN
 
    del_1k:LOOP
 
    delete from RUSDB.RUS_CommonFriend where SmallUserId = v_smalluserid limit 1000;
 
    select row_count() into @count;
 
    IF @count = 0 THEN
 
        select CONCAT ('RUSDB.RUS_CommonFriend SmallUserId = ',v_smalluserid,' is ',@count,' rows.') as RUS_CommonFriend_delete_finish;
 
        LEAVE del_1k;
 
    END IF;
 
    select sleep(3);
 
    END LOOP del_1k;
 
END$$
 
DELIMITER ;

 

 

 

本文转自 liang3391 51CTO博客,原文链接:http://blog.51cto.com/liang3391/820280


相关文章
|
SQL 存储 数据库管理
走向DBA[MSSQL篇] 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串
原文:走向DBA[MSSQL篇] 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串 测试的结果在此处 本篇详解一下原理 设计背景 由于历史原因,线上库环境数据量及其庞大,很多千万级以上甚至过亿的表。
1108 0
|
2月前
|
存储 SQL NoSQL
|
3月前
|
存储 SQL 关系型数据库
MySql数据库---存储过程
MySql数据库---存储过程
50 5
|
3月前
|
存储 关系型数据库 MySQL
MySQL 存储过程返回更新前记录
MySQL 存储过程返回更新前记录
69 3
|
3月前
|
存储 SQL 关系型数据库
MySQL 存储过程错误信息不打印在控制台
MySQL 存储过程错误信息不打印在控制台
89 1
|
5月前
|
存储 关系型数据库 MySQL
Mysql表结构同步存储过程(适用于模版表)
Mysql表结构同步存储过程(适用于模版表)
55 0
|
5月前
|
存储 SQL 关系型数据库
MySQL 创建存储过程注意项
MySQL 创建存储过程注意项
52 0
|
6月前
|
存储 SQL 关系型数据库
(十四)全解MySQL之各方位事无巨细的剖析存储过程与触发器!
前面的MySQL系列章节中,一直在反复讲述MySQL一些偏理论、底层的知识,很少有涉及到实用技巧的分享,而在本章中则会阐述MySQL一个特别实用的功能,即MySQL的存储过程和触发器。
116 0

热门文章

最新文章