首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Server:跨连接的持久“缓存”表

Server:跨连接的持久“缓存”表
EN

Stack Overflow用户
提问于 2009-11-09 21:56:04
回答 1查看 130关注 0票数 0

我有一组大约100万行(大约行号: 1.5kb),需要“缓存”,以便应用程序的许多不同部分都可以使用它。

这些行是来自其他表的已编译数据的派生/非规范化“视图”。生成这些数据并不是非常昂贵(30-60秒),但是作为应用程序可以直接查询的视图或表值函数的一部分,生成“动态”的速度太慢了。我想定期更新这些数据,也许每隔几分钟更新一次。

我的第一个想法是有一个计划作业,每n分钟更新一次全局临时表。

什么是最好的策略,表现方面?我不确定将它存储在真正的表与全局临时表(##tablename)与其他我没有想到的策略之间的性能含义。我不想用插入到这个表中的数据来破坏事务日志.这些都是派生的数据,不需要持久化。

我正在使用2000。在这个项目的时间框架内升级并不是一个选项,但是如果2005/2008/2010年间有功能可以使这更容易,我将非常感谢听到这一点。

EN

Stack Overflow用户

回答已采纳

发布于 2009-11-09 22:13:13

我建议使用物化视图 (AKA索引视图)。

限制:

  1. 视图定义必须始终从相同的基础数据返回相同的结果。
  2. 视图不能使用非确定性函数。
  3. 视图上的第一个索引必须是一个聚集的唯一索引。
  4. 如果使用Group,则必须在select列表中包含新的COUNT_BIG(*)。
  5. 视图定义不能包含以下内容:
代码语言:javascript
运行
复制
1. TOP
2. Text, ntext or image columns
3. DISTINCT
4. MIN, MAX, COUNT, STDEV, VARIANCE, AVG
5. SUM on a nullable expression
6. A derived table
7. Rowset function
8. Another view
9. UNION
10. Subqueries, outer joins, self joins
11. Full-text predicates like CONTAIN or FREETEXT
12. COMPUTE or COMPUTE BY
13. Cannot include order by in view definition

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1704153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档