刷新准备的报告表大约需要5-10分钟。我们希望不断刷新此表(可能每15分钟刷新一次或连续刷新一次)。

我们非常频繁地查询此报告表(每分钟多次),并且我无法将其保持任何时间长度。如果数据已使用15分钟,则可以。

我无法删除表并重新创建它。我无法删除表的内容并重新创建它。

我是否应该使用一种技术,例如在两个表之间进行交换(在构建另一个表时从一个表中读取),还是将这个5-10分钟的过程放在一个大事务中?

最佳答案

Use synonyms?。在创建时,它指向tableA。

CREATE SYNONYM ReportingTable FOR dbo.tableA;

15分钟后,您创建tableB并重新定义同义词
DROP SYNONYM ReportingTable;
CREATE SYNONYM ReportingTable FOR dbo.tableB;

同义词只是指向实际表的指针:这样,对实际表重命名等的处理得以简化和抽象化,并且所有代码/客户端都将使用ReportingTable
编辑,2011年11月24日

同义词在所有版本中均可用:分区切换仅适用于Enterprise/Developer。

编辑,2012年2月

您可以切换标准版中的整个表格(也许是Express,未经测试)
ALTER TABLE .. SWITCH ..

如果目标表为空,这将比同义词更优雅。

编辑,2012年2月(2)

另外,您可以按照Caching joined tables in SQL Server通过架构旋转

10-07 18:40