记一次mysql删除大量数据的优化

来源:互联网 发布:nginx 变量 header 编辑:程序博客网 时间:2024/05/20 01:09

最近工作中,遇到了要删除一些相关库的数据信息,涉及的数据有点多。

实际场景是这样的,公司的一个电商项目,电商为卖家准备了报表的相关数据,报表业务在实现时,将一些订单信息冷库备份到报表的库中,然后再在报表的库中进行相关的报表相关业务的计算。

由于项目起步时间晚,客户留存率不高,就遗留了相当大的一部分流失用户的数据,现在,开始着手删除这些已经不再使用系统的客户的历史数据。

数据库中做了分表将相关的公司分到不同的表中,光trade这张表,同个公司下平均就有百万级的数据,要根据公司的id去delete这些数据,肯定是慢的要死的。

所以,就看了相关的delete优化的内容。

最终,结合现有情况选择了最简单粗暴的方式,trade表中现有很多组合索引,找了一个符合这次删除要求的组合索引,在where 语句中将这个组合索引搞进来。

delete from trade where company_id = 233; 本来是这样的一个语句,为了走索引就变成了delete from trade where company_id = 233 and date > "",  (现有组合索引为company_Id 和 date)

原创粉丝点击