某个查询正在从 ASP .NET 页面调用。我在 Management Studio 中研究了该查询的执行计划,87% 用于排序。我非常需要排序,否则显示的数据将毫无意义。
我是否可以请求 SQL Server 缓存排序的结果集,以便在后续运行中更快地返回数据?
或者 SQL Server 是否足够智能来进行缓存处理,如果可能的话,我试图强制它缓存结果是不是犯了错误?
任何相关信息将不胜感激,并提前致谢:)
更新:
我刚刚在一篇文章中读到,使用聚簇索引创建 View 会提高性能,因为索引会将 View 中的数据持久保存到磁盘。这是真的?我该怎么做?有文章吗?
最佳答案
虽然您可以创建一个 indexed view ,正如您在更新中提到的那样,您应该知道:
- 无论是在创建 View 时,还是在更新 View 所基于的表时,您都必须遵循很多规则,并且,
- 仅仅因为有一个(聚集的)索引,并不意味着排序顺序 - 您在查询此表时仍然必须使用 ORDER BY,并且,
- 除非您使用的是企业版,否则您必须使用 WITH (NOEXPAND) query hint 查询 View
- 您可以通过在 CREATE INDEX 语句中指定 ASC 和 DESC 来指定索引的顺序,而不是在 CREATE VIEW 中。允许在 View 中使用 ORDER BY(通过指定前 100%)的“hack”不会有任何效果。
关于c# - 我可以请求 SQL Server 缓存某个结果集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4095762/