我有一个庞大的数据库,它每天处理电子邮件流量。在系统中,它需要每天删除一些旧邮件:
Delete from EmailList(nolock)
WHERE EmailId IN (
SELECT EmailId
FROM Emails
WHERE EmailDate < DATEADD([days], -60, GETDATE())
)
它可以工作,但问题是:完成需要很长时间,因此日志文件变得非常大。日志文件大小每天增加超过 100GB。
我想我们可以把它改成
Delete from EmailList(nolock)
WHERE EXISTS (
SELECT EmailId
FROM Emails
WHERE (Emails.EmailId = EmailList.EmailId) AND
(EmailDate < DATEADD([days], -60, GETDATE()))
)
但除此之外,我们还能做些什么来提高性能。最重要的是,减少日志文件的大小?
- EmailId 已编入索引。