删除加速

好帅的一条鱼 2010-09-07 08:59:48
我某张表有n多条记录,存放刷卡数据的,现在要删除一些之前的,怎么样另删除快点啊。
Delete From AttendanceRollcall Where Date<='2010-01-30 00:00:00.000'
我这样按日期,每次删除两个月的数据还要好久好久,有办法能让删除快点吗?
...全文
183 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
kiruya0 2010-09-07
  • 打赏
  • 举报
回复
10万多条记录要删10分钟? 机器太慢了吧
如果定期做的话 直接写个计划任务吧
直接getdate后再做修正
中国风 2010-09-07
  • 打赏
  • 举报
回复
SET ROWCOUNT 1000--一次刪除1000條

DEL:
Delete From AttendanceRollcall Where Date<='2010-01-30 00:00:00.000'

if @@ROWCOUNT>0
GOTO DEL

SET ROWCOUNT 0
华夏小卒 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 good212164 的回复:]
引用 7 楼 wufeng4552 的回复:

SQL code
--try
while 1=1
begin
Delete top (5000) From AttendanceRollcall Where Date<='2010-01-30 00:00:00.000'
if @@rowcount<5000 break;
end

水哥的方法,将时间加快了一倍。用这个删除两个月的……
[/Quote]
学习
好帅的一条鱼 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wufeng4552 的回复:]

SQL code
--try
while 1=1
begin
Delete top (5000) From AttendanceRollcall Where Date<='2010-01-30 00:00:00.000'
if @@rowcount<5000 break;
end
[/Quote]
水哥的方法,将时间加快了一倍。用这个删除两个月的数据只要五分多钟了。非常感谢。
好帅的一条鱼 2010-09-07
  • 打赏
  • 举报
回复
报告想起情况,我现在删除了两个月的数据Where Date<='2010-03-30 00:00:00.000'(上一次删除到1/30号)
这次共101855条数据。用时11:36、折腾人啊。
水族杰纶 2010-09-07
  • 打赏
  • 举报
回复
--try
while 1=1
begin
Delete top (5000) From AttendanceRollcall Where Date<='2010-01-30 00:00:00.000'
if @@rowcount<5000 break;
end
sqlserver5 2010-09-07
  • 打赏
  • 举报
回复
建议使用分区,然后用分区Switch To 另一个表,直接Drop Table 就可以。再大的数据也只要几秒钟。
好帅的一条鱼 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wufeng4552 的回复:]

Where Date<='2010-01-30 00:00:00.000'
大概有多少数据?
[/Quote]

跑哪去了啊。
claro 2010-09-07
  • 打赏
  • 举报
回复
只让删除快点就OK吗?

如果是,把索引去掉。(然后重建索引)

--上面操作整体消耗时间可能大于直接del的时间。
好帅的一条鱼 2010-09-07
  • 打赏
  • 举报
回复
看了一下,大概10来万,有时候要十多分钟啊。
zcfzcf001 2010-09-07
  • 打赏
  • 举报
回复
将日期加入索引,另建议做个循环SQL脚本,每次删除如:10000条,这样就能快了。
水族杰纶 2010-09-07
  • 打赏
  • 举报
回复
Where Date<='2010-01-30 00:00:00.000'
大概有多少数据?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧