目前我们有一个AuditLog表,它包含超过1100万条记录。不管索引和统计信息如何,引用此表的任何查询都需要很长时间。大多数报告都不会检查过去一年的审计记录,但我们仍然希望保留这些记录。处理这个问题的最佳方法是什么?
我想保留AuditLog表,以保存所有小于或等于一年的记录。然后将任何超过一年的记录移到AuditLogHistory表中。也许只是每天晚上运行一个批处理文件来移动这些记录,然后更新AuditLog表的索引和统计信息。这是完成这项任务的好方法吗?或者我应该以什么其他方式存储旧记录?
从AuditLog表带回的记录会到达一个链接服务器,并根据条件检入6个不同的数据库,以查看其中是否存在某个成员。我没有权限对链接的服务器数据库进行任何更改,所以只能优化我所拥有的Auditlog。访问链接服务器数据库会占用90%以上的查询成本。所以我只是想限制我能做的。
首先,我发现很难相信你不能在一个有1100万条记录的表上优化查询。您应该调查与频繁运行的查询相关的索引。
在任何情况下,问题的答案都是"分区"。您将按日期列进行分区,并确保在所有查询中都包含此条件。这将减少数据量,并可能加快处理速度。
文档是学习分区的好地方。