创建历史审计表

时间:2017-02-10 18:56:39

标签: sql sql-server audit-logging historical-db

目前,我们有一个包含超过11M记录的AuditLog表。无论索引和统计信息如何,引用此表的任何查询都需要很长时间。大多数报告都不会检查过去一年的审核记录,但我们仍希望保留这些记录。什么是解决这个问题的最好方法?

我想保持AuditLog表保存小于或等于一年的所有记录。然后将任何大于一年的记录移动到AuditLogHistory表。也许只是每晚运行一个批处理文件来移动这些记录,然后更新AuditLog表的索引和统计信息。这是完成此任务的好方法吗?或者我应该以其他方式存储旧记录?

从AuditLog表中返回的记录命中链接服务器并检查6个不同的数据库,以根据条件查看其中是否存在某个成员。我没有权限对链接服务器db进行任何更改,因此只能优化我拥有的Auditlog。点击链接服务器db会占用超过90%的查询成本。所以我只想限制自己的能力。

1 个答案:

答案 0 :(得分:3)

首先,我发现很难相信您无法在包含1100万条记录的表格上优化查询。您应该调查相对于经常运行的查询的索引。

无论如何,你问题的答案是“分区”。您可以按日期列进行分区,并确保在所有查询中包含此条件。这将减少数据量并可能加快处理速度。

documentation是开始学习分区的好地方。