小弟求教关于DELETE的问题 我遇到一个情况,就是当表中大部分数据的时候,大概有几十万到一百多万吧,用delete from 表 where 删除的时候 数据库日志会很大~~~求解决方法delete数据库 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个无解的。除非简单恢复模式。如果是清表的话truncate. 用DELETE 是一条条的删除,事务日志很多的。 如果要保留的数据很小的话,可以把要保留的复制到临时表, 然后truncate 再插进去。具体的开销,你自己可以测试下看是否花的来。 方案1:delete的时候切换恢复模式,只要非完整即可。delete后还原原有恢复模式。方案2:保持恢复模式,操作完后做一次日志备份。方案3:select * into #t from tb where 需要保留的数据gotruncate table tbgoinsert into tb select * from #tgo 你有做日志备份吗?不需要的日志备份的话就改成简单模式吧。如果觉得日志太多,可以截断的。DBCC SHRINKFILE (N'LOGNAME' , 0, TRUNCATEONLY) SQL和SP的效率問題! 想让表的属性改变但已存入的数据不变怎么办?(急) 可否循环添加数据库表格字段Alter Add Column 在SQL 20005下的程序问题? 链接服务器性能的问题 千万级别数据查询 ACCESS数据库如何向SQL Server数据库转换 如何让两个表的数据保持一致性,求助! 找出数据的局部最大值 聚集索引和非聚集索引这样理解对吗? sql判断是否在这些范围内 找出不在这个表范围内的数据 sql server 2012安装程序失败 文件格式无效。我是win8专业版。
除非简单恢复模式。如果是清表的话truncate.
方案2:保持恢复模式,操作完后做一次日志备份。
方案3:
select * into #t from tb where 需要保留的数据
go
truncate table tb
go
insert into tb
select * from #t
go
如果觉得日志太多,可以截断的。DBCC SHRINKFILE (N'LOGNAME' , 0, TRUNCATEONLY)