如何在 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_currentdata_archive) .

我知道如何创建初始表(约束和所有)和视图。如何实现日常维护自动化(将旧数据从_current 移动到_archive)?

【问题讨论】:

分区视图确实存在(并且已经存在了一段时间),但它们是一个丑陋的拐杖。你考虑过Partitioned Table吗? 我认为使用分区视图更容易实现我想要的。与我的同事一起工作也会更容易(因为他们已经熟悉这些)。 【参考方案1】:

您应该使用sliding window pattern。编写一个存储过程来交换表之间的分区并使用作业来安排执行。

【讨论】:

不错的例子,但由于视图不必是可更新的(所有插入都来自_current,没有更新)我最好放弃两个表上的约束,移动行从_current_archive 并将新约束添加回表。我可以在非高峰时间这样做。 请注意,在分区表之间交换行实际上并不是移动数据,而是将整个分区从一个表切换到另一个表。它非常快速且可扩展。所以我宁愿使用分区表 _current 和 _archive 以及视图作为这些表的联合。

以上是关于如何在 SQL Server 2005 中创建和维护最近 7 天的分区视图和存档记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server 中创建和查询链接数据库服务器?

在 sql server 2008 中创建和修改时间戳

序列号,在 SQL Server 中创建和修改

在 SQL Server 中创建和管理全局 Procs 和 UDF 的最佳方法是啥?

如何在 SQL Server [2005] 中创建类似于 .dbo 的架构

Oracle Sql Developer如何在Oracle中创建和设置角色?