删除mysql千万级表数据存储编写记录

1.注意过滤字段添加索引,否则执行效率低
CREATE INDEX INX_xxx ON xxxtable (字段CREATED_AT );
2.存储过程,按照日期删除,每次删除1000条

--创建存储
drop procedure if exists p_delete_is_del;
delimiter $$
create procedure p_delete_is_del(in table_name varchar(64))
begin
  set @sql = concat('delete from ', table_name, ' where CREATED_AT < ''2024-03-01''  LIMIT 1000');
  prepare statement_remove_is_del from @sql;
--  select @sql;
  r_loop: loop
  execute statement_remove_is_del;
  if row_count() = 0 then
       leave r_loop; 
    end if;
    commit;
  end loop r_loop;
  deallocate prepare statement_remove_is_del;
end$$
delimiter ;

3.执行存储过程,将对应表传入
call p_delete_is_del(‘abc’);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值