从ASP .NET页面调用某个查询。我在Management Studio中研究了该查询的执行计划,87%用于排序。我非常需要排序,否则显示的数据将毫无意义。
无论如何,我是否可以请求SQL Server缓存已排序的结果集,以便在后续运行中更快地返回数据?
或者SQL Server是否足够智能来执行缓存处理,如果可能的话,我试图强制它缓存结果我做错了吗?
任何相关信息都将受到高度赞赏,并提前感谢:)
更新
我刚刚在一篇文章中读到,使用聚簇索引创建View会提高性能,因为索引会将视图中的数据保留到磁盘中。这是真的?我该如何做到这一点?有文章吗?
答案 0 :(得分:12)
简而言之,不:不在SQL服务器端;它当然会在可能的情况下将数据加载到内存中,并缓存执行计划 - 因此后续调用可能更快,但它无法缓存结果。
选项:
答案 1 :(得分:12)
虽然您可以创建indexed view,但正如您在更新中所提到的那样,您应该知道:
答案 2 :(得分:2)
有时使用的选项是将已排序的数据存储在辅助表中。这可以是例如是一个临时表,只为会话创建,或者是整个数据库的缓存表。
答案 3 :(得分:1)
同样,SQL服务器本身会在内存中缓存频繁的查询。您可以使用查询分析器并运行复杂查询几次来测试这一点,每次都会变得更快。鉴于此,可能不需要永久缓存。
如果是,我建议使用缓存表并运行查询并将值插入另一个表中。您可以使用应用程序变量或其他sql表来确定何时再次刷新缓存。
用于插入缓存表的示例查询:
插入缓存选择值,表1中的值按字段排序