私は巨大なデータベースを持っており、毎日メール トラフィックを処理しています。システムでは、毎日いくつかの古いメールを削除する必要があります。
Delete from EmailList(nolock)
WHERE EmailId IN (
SELECT EmailId
FROM Emails
WHERE EmailDate < DATEADD([days], -60, GETDATE())
)
動作しますが、問題は、完了するまでに長い時間がかかり、そのためにログ ファイルが非常に大きくなることです。ログ ファイルのサイズは毎日 100 GB 以上増加します。
に変更できると思います
Delete from EmailList(nolock)
WHERE EXISTS (
SELECT EmailId
FROM Emails
WHERE (Emails.EmailId = EmailList.EmailId) AND
(EmailDate < DATEADD([days], -60, GETDATE()))
)
しかし、これ以外に、パフォーマンスを改善するためにできることはありますか。何よりも、ログファイルのサイズを減らしますか?
- EmailId はインデックス化されています。