一个删除语句23:30开始执行,内容是删除最近7天数据 WHERE Date> CAST(GETDATE()-7 AS DATE) 大概执行1小时,第二天凌晨00:30结束
由于中间横跨了个00:00,删除数据上会不会出现前30分钟删除的是第一天的日期往前推7天的数据
后30分钟删除的是第二天的日期往前推7天的数据
由于中间横跨了个00:00,删除数据上会不会出现前30分钟删除的是第一天的日期往前推7天的数据
后30分钟删除的是第二天的日期往前推7天的数据
不过合理的逻辑应该是从 24:00 前推 7 天吧,而不是从开始执行的时间前推。又:删除的性能不应该这么差,建议在 Date 字段上建索引。
又:这是什么需求,删除最近7天难道还有7天以前的数据?不是全表删除吗?
set @date = getdate()WHERE Date between dateadd(d,-7,@date) and @date
1.已经在Date上创建单独的索引
2.因为最近7天内的数据有均有可能发生变化,所以删除最近7天,重新导入上头丢过来的最新7天数据
3.数据库有5000W+数据,所以删除效率一直我头疼的地方
先将7天前的插入历史表,
再用 TRUNCATE TABLE 全删除,
最后导入。