C# 我可以请求SQL Server缓存某个结果集吗?
有一个特定的查询正在从ASP.NET页面调用。我在ManagementStudio中研究了该查询的执行计划,其中87%用于排序。我急需排序,否则显示的数据将毫无意义 我是否可以请求SQL Server缓存已排序的结果集,以便在后续运行中更快地返回数据 或者SQL Server是否足够聪明,可以进行缓存处理?如果可能的话,我是否因为试图强制它缓存结果而犯了错误 我们将非常感谢您提供的任何相关信息:) 更新:C# 我可以请求SQL Server缓存某个结果集吗?,c#,asp.net,sql-server-2008,caching,C#,Asp.net,Sql Server 2008,Caching,有一个特定的查询正在从ASP.NET页面调用。我在ManagementStudio中研究了该查询的执行计划,其中87%用于排序。我急需排序,否则显示的数据将毫无意义 我是否可以请求SQL Server缓存已排序的结果集,以便在后续运行中更快地返回数据 或者SQL Server是否足够聪明,可以进行缓存处理?如果可能的话,我是否因为试图强制它缓存结果而犯了错误 我们将非常感谢您提供的任何相关信息:) 更新: 我刚刚在一篇文章中读到,使用聚集索引创建视图将提高性能,因为索引将视图中的数据持久化到磁盘
我刚刚在一篇文章中读到,使用聚集索引创建视图将提高性能,因为索引将视图中的数据持久化到磁盘。这是真的吗?我该怎么做呢?有文章吗?有时使用的一个选项是将排序后的数据存储在辅助表中。例如,这可以是您为会话创建的临时表,也可以是整个数据库的缓存表。简言之,否:不在SQL server端;如果可能的话,它当然会将数据加载到内存中,并缓存执行计划——因此后续调用可能会更快,但它无法缓存结果 选项:
- 调整计划;排序听起来很有攻击性——您是否可以对某些数据进行非规范化或添加索引(甚至可能是聚集索引);如果您显示查询,我们还可以对其执行其他操作(但是在没有完全工作的DB的情况下进行调优充其量是一种客户优化)
- 如果合理的话,在web服务器上缓存结果
同样,SQL server本身将在内存中缓存频繁的查询。您可以通过使用查询分析器并运行复杂查询几次来测试这一点,每次都会更快。鉴于此,可能不需要永久缓存 如果是,我建议使用缓存表,运行查询并将值插入到另一个表中。您可以使用应用程序变量或其他sql表来确定何时再次刷新缓存 用于插入缓存表的查询示例: 插入到缓存中选择值,值从表1按字段排序