首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以请求Server缓存某个结果集吗?

问我可以请求Server缓存某个结果集吗?
EN

Stack Overflow用户
提问于 2010-11-04 10:33:04
回答 4查看 22.1K关注 0票数 13

有一个从ASP .NET页面调用的特定查询。我在Management中研究了该查询的执行计划,87%是一种类型。我迫切需要排序,否则显示的数据将毫无意义。

我是否可以请求Server缓存排序结果集,以便在后续运行时更快地返回数据?

或者SQL Server是否足够聪明来执行缓存处理,如果可能的话,我是否做错了尝试将其强制缓存结果?

如有任何有关资料,我们会非常感谢:)

更新:

我刚刚在一篇文章中看到,使用聚集索引创建View将提高性能,因为索引将将数据持久化到磁盘。这是真的吗?我该怎么做呢?有文章吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-04 10:38:09

简而言之,不是:不是在SQL服务器端;如果可能的话,它当然会将数据加载到内存中,并缓存执行计划--因此后续调用可能更快,但不能缓存结果。

选项:

  • 调优计划;这种排序听起来很激进--你能不能去修饰一些数据或者添加一个索引(甚至是一个聚集索引);如果你显示这个查询的话,我们还可以做一些其他的事情(但是如果没有一个完全工作的DB,我们可以做其他的估计)。
  • 如果这样做是明智的,则将结果缓存到web服务器。
票数 13
EN

Stack Overflow用户

发布于 2010-11-04 10:48:50

虽然您可以创建一个索引视图,但正如您在更新中提到的那样,您应该知道:

  1. 在创建视图和更新它所依据的表时,您必须遵循很多规则,而且,
  2. 仅仅因为有(聚集的)索引,这并不意味着排序顺序--在查询此表时仍然需要使用顺序,而且,
  3. 除非使用企业版,否则必须使用with (NOEXPAND) 查询提示查询视图
  4. 您可以通过在CREATE语句中,而不是在CREATE视图中指定ASC和DESC来指定索引的顺序。允许在视图中按顺序排序的“黑客”(通过对顶级100 %进行详细说明)将没有任何效果。
票数 16
EN

Stack Overflow用户

发布于 2010-11-04 10:37:28

有时使用的一个选项是将已排序的数据存储在辅助表中。例如,这可以是只为会话创建的临时表,也可以是整个数据库的缓存表。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4095762

复制
相关文章

相似问题

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