如何在 SQL Server 2005 中创建和维护最近 7 天的分区视图和存档记录?
Posted
技术标签:
【中文标题】如何在 SQL Server 2005 中创建和维护最近 7 天的分区视图和存档记录?【英文标题】:How to create and maintain a partitioned view with last 7 days and archive records in SQL Server 2005? 【发布时间】:2012-03-26 09:44:37 【问题描述】:我有一个相当大的表,我需要查询它以获取报告应用程序。大多数情况下,用户会对最近 7 天的数据感兴趣,但他们希望能够时不时地查询旧的(存档数据)。因为他们希望最近数据的一切都快得惊人,但不介意等待存档记录,我猜我应该可以使用分区视图 (data
) 和两个表 (data_current
和 data_archive
) .
我知道如何创建初始表(约束和所有)和视图。如何实现日常维护自动化(将旧数据从_current
移动到_archive
)?
【问题讨论】:
分区视图确实存在(并且已经存在了一段时间),但它们是一个丑陋的拐杖。你考虑过Partitioned Table吗? 我认为使用分区视图更容易实现我想要的。与我的同事一起工作也会更容易(因为他们已经熟悉这些)。 【参考方案1】:您应该使用sliding window pattern。编写一个存储过程来交换表之间的分区并使用作业来安排执行。
【讨论】:
不错的例子,但由于视图不必是可更新的(所有插入都来自_current
,没有更新)我最好放弃两个表上的约束,移动行从_current
到_archive
并将新约束添加回表。我可以在非高峰时间这样做。
请注意,在分区表之间交换行实际上并不是移动数据,而是将整个分区从一个表切换到另一个表。它非常快速且可扩展。所以我宁愿使用分区表 _current 和 _archive 以及视图作为这些表的联合。以上是关于如何在 SQL Server 2005 中创建和维护最近 7 天的分区视图和存档记录?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server 中创建和查询链接数据库服务器?
在 SQL Server 中创建和管理全局 Procs 和 UDF 的最佳方法是啥?