实践经验
删除数据
日志表中有千万条数据,想删掉一部分旧数据,于是执行了如下语句
DELETE FROM t_table where create_time < '2022-05-01'
然后就执行超时了,因为create_time字段并没有索引,所以此条语句需要全表扫描,巨慢。
可以将语句调整为
# id为主键
DELETE FROM t_table order by id limit 5000000
# 如果5.1之前的数据不足100条,就很慢了,又要全表扫描
DELETE FROM t_table where create_time < '2022-05-01' limit 100
实测,一张5千万条数据的表中,删除5百万条数据,花费45秒左右
【执行SQL】delete from t_table order by id limit 5000000
【执行成功】 影响:[ 5000000 ] 行 耗时:[ 45.266s. ]

浙公网安备 33010602011771号