如何定期重建频繁访问的报告表?

Jas*_*son 10 t-sql sql-server reporting denormalization

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

我们非常频繁地查询此报告表(每分钟多次),并且我无法在任何时间内保持这种状态.如果数据是15分钟就可以了.

我不能放弃桌子并重新创建它.我无法删除表的内容并重新创建它.

有没有我应该使用的技术,比如在两个表之间交换(在我们构建另一个表时从一个表读取)或者我将这个5-10分钟的过程放在一个大型事务中?

gbn*_*gbn 13

用同义词?.在创作时,这指向tableA.

CREATE SYNONYM ReportingTable FOR dbo.tableA;
Run Code Online (Sandbox Code Playgroud)

15分钟后,您创建tableB并重新定义同义词

DROP SYNONYM ReportingTable;
CREATE SYNONYM ReportingTable FOR dbo.tableB;
Run Code Online (Sandbox Code Playgroud)

同义词只是指向实际表的指针:这样,实际表重命名等的处理被简化并抽象出来,所有代码/客户端都会使用 ReportingTable

编辑,2011年11月24日

所有版本都提供同义词:分区切换仅限Enterprise/Developer.

编辑,2012年2月

您可以在标准版中切换整个表格(可能是Express,未经测试)

ALTER TABLE .. SWITCH ..
Run Code Online (Sandbox Code Playgroud)

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

编辑,2012年2月(2)

此外,您可以根据SQL Server中的Caching连接表通过模式进行旋转