我正在运行一个作业,该作业从 7 个表中删除数据,其中 2 个表包含 10-20 万条记录。但是,当从仅包含 42000 条记录的特定表 web_activity 中删除数据时,该作业卡住了。大多数情况下需要 4 个小时。但有时只需要 7 分钟。如果这是索引的问题,那么在 7 分钟执行的那一天会发生什么。
还有 4 个其他作业每天并行运行,有时会产生阻塞,但阻塞是由于资源被其他作业利用。
我关心的是,如何才能将删除 web_activity 表的 42000 条记录的时间缩短到四个小时?
还有一点:逻辑读取数量巨大,为 2066225339。我不确定这是否是原因。
对该表执行 DBCC SHOWCONFIG 时显示以下数据:
我正在使用另一种方法:
select Web_Activity_id into #Temp_web_activity from Web_Activity
where MONTH_NUMBER >=@min_month_to_delete
and year >= @year_to_delete;
DELETE FROM Web_Activity WHERE Web_Activity_id
in (select Web_Activity_id from #Temp_web_activity);
有用吗?我也试过在较低平台上批量删除,但没什么帮助。