我有一组大约100万行(大约行数:1.5kb)需要“缓存”,以便我们的应用程序的许多不同部分都可以使用它。
这些行是来自其他表的编译数据的派生/非规范化“视图”。生成这些数据并不是非常昂贵(30-60秒),但是太快而无法生成“动态”作为应用程序可以直接查询的视图或表值函数的一部分。我想定期更新这些数据,也许每隔几分钟更新一次。
我的第一个想法是让计划的作业每隔 n 分钟用这些数据更新一个全局临时表。
最佳策略是什么,表现明智?我不确定将它存储在真实表中的性能影响与全局临时表(## tablename)相比,我还没有想到的其他策略。我不想通过插入此表来破坏事务日志...它是所有派生数据,不需要保留。
我正在使用Microsoft SQL Server 2000.在此项目的时间范围内升级不是一种选择,但如果2005/2008/2010中的功能可以使这更容易,我会很感激听到这一点。< / p>
答案 0 :(得分:1)
我建议使用materialized view(AKA索引视图)。
限制:
视图定义不能包含以下内容: