刷新准备的报告表大约需要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通过架构旋转