现在遇到这样一个问题:一个sql数据库,我要对其中一个数据表进行删除一些数据,这个数据表中一共有160万条记录,是从05年就开始的数据,我要把08年09年的留着,其他的都删掉。
如果手动一点点删,特别慢。
如果用delete from 表 where year(字段,4)=‘2005’,这样来删除05年的数据,它过一会之后,就弹出“超时已过期”,怎么办,每次弄都是这样。我已经把数据库的选项中的查询超时时间设置成了500.但还是出这个错误,一直无法解决!
如果手动一点点删,特别慢。
如果用delete from 表 where year(字段,4)=‘2005’,这样来删除05年的数据,它过一会之后,就弹出“超时已过期”,怎么办,每次弄都是这样。我已经把数据库的选项中的查询超时时间设置成了500.但还是出这个错误,一直无法解决!
delete from 表 where DATENAME(YY,字段)=‘2005’
set rowcount 5000
select top 1 * from 表 where year(字段,4)<2008
while @@rowcount>0
begin
delete from 表 where year(字段,4)<2008
end
set rowcount 0
--返回为int
/*
2009
*/
delete from 表 where 字段 <'2008-01-01'
delete from 表 where DATENAME(YY,字段)=‘2005’
如果出现超时的情况,在设置中把超时的时间设置的长一些,可以试试
这个数据库还不能停,因为那边在一直用着。想问问大家,你们工作的地方有没有过这种问题,都是怎么解决的?
里面循环调用一个sql命令行执行,每次删除几千行为什么不在sql里循环?
因为在sql里循环删除,日志大小还是取决于最终的所删的所有记录数的,还是会日志暴涨,时间超时