如何从sql server上的一个表中删除8,500,000条记录

删除活动
其中unt_uid为null

将是最快的方式,但没有人可以访问数据库/表,直到这个语句完成,所以这是一个不要去.

我定义了一个光标,以便在工作时间内完成此任务,但无论如何,对生产力的影响是很大的.
那么如何删除这些记录就能保证这个数据库的正常使用?

它是32位Win2003上的sql-2005服务器.第二个问题是:你估计这个工作需要多长时间(6小时或60小时)? (是的,我知道这取决于负载,但假设这是一个小企业的环境)

解决方法

你可以用块来做.例如,每10秒执行一次:
delete from activities where activityid in 
  (select top 1000 activityid from activities where unt_uid is null)

显然定义了行数(我任意选择1000)和间隔(我选择了10秒),这对你的应用来说是最有意义的.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...