如何在Sql-server中删除大量数据?

bluemouse 2003-05-21 03:54:54
数据库的一个表中有大约500万行数据需要部分删除,但如果简单的执行delete,速度则很慢,几乎不能完成,似乎是写事务日志占用的资源。请问,如何解决这个问题,或者说在delete过程中强制sqlserver不记录日志?

先谢谢了!
...全文
360 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
erigido 2003-05-22
gz
  • 打赏
  • 举报
回复
xlhl 2003-05-22
mark
  • 打赏
  • 举报
回复
pengdali 2003-05-22
SQLServer现有的版本delete就是要写日志的!
  • 打赏
  • 举报
回复
yydy 2003-05-22
先备份保留数据
重新建表
恢复保留数据
一点想法,不知可不可行
  • 打赏
  • 举报
回复
bluemouse 2003-05-22
各位老大,强调一下,我的要求是“部分删除”,多谢!
  • 打赏
  • 举报
回复
pengdali 2003-05-21
exec sp_dboption yourDB,'trunc. log on chkpt.',true
就可以在INSERT,UPDATE,DELETE时不写日志了

to 小黑你没搞错吧!这是截断日志,且只有master可以用

trunc. log on chkpt. 当为 true 时,如果数据库处于日志截断模式,则检查点将截断日志中非活动的部分。只能为 master 数据库设置此选项。
  • 打赏
  • 举报
回复
pengdali 2003-05-21
TRUNCATE TABLE 表名

不会写日志
  • 打赏
  • 举报
回复
happydreamer 2003-05-21
TRUNCATE TABLE 只在事务日志中记录页的释放

可以这样
1.数据库恢复模式改为“简单”模式
2.用bcp将原表需需保留数据到导出b;
3.设置数据库trunc. log on chkp.为true;
4.truncate 原表;
5.bcp b到原表;
6.设置数据库trunc. log on chkp.为false.



exec sp_dboption yourDB,'trunc. log on chkpt.',true
就可以在INSERT,UPDATE,DELETE时不写日志了

  • 打赏
  • 举报
回复
lucie 2003-05-21
另外建一个表,将现有表的结构导过去,然后将有的表删除,再重命名新表就OK了
  • 打赏
  • 举报
回复
hater 2003-05-21
TRUNCATE TABLE table_name
很快
如果一个表中数据都不要了也可以把表新建一次
  • 打赏
  • 举报
回复
SORROWAPPLE 2003-05-21
TRUNCATE TABLE table_name
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2003-05-21 03:54
社区公告
暂无公告