SQL Server - 如何确保缓存查询结果?

时间:2011-08-11 19:57:15

标签: java sql sql-server caching prepared-statement

我有一个应用程序,其登录后的第一页向用户显示了大量数据。对数据库的查询需要很长时间 - 比方说10秒。该数据库位于SQL Server 2008中,查询运行构建为Java中的预准备语句。需要显示的数据通常每天只会更改一次。所以 - 如果我可以缓存这个结果,并且显示更快,那将是理想的。

但是,我不确定我需要做什么来降低这10秒等待 - 每次加载页面时都会发生相同的延迟。我需要做些什么来确保SQL Server将结果缓存到查询中吗?在第二次加载时,它当然似乎没有更快 - 我应该从哪里开始探索?

非常感谢所有帮助!

2 个答案:

答案 0 :(得分:2)

您应该查看indexed views.

它们允许您在索引中存储优化程序可以间接或直接访问的查询结果(以视图的形式)(即,它“知道”它具有数据,并将其用于查询除了那些之外的查询那个观点)。

链接中列出了许多限制。

它们是唯一真正可行的方法(除了创建和管理结果表之外),以缓存复杂的查询结果,如聚合。

我猜你的查询很复杂和/或包含聚合字段和分组,即使数据页已经缓存在内存中,总是也需要处理开销。

答案 1 :(得分:1)

如果数据每天只更新一次,请考虑将结果写入常规表并定期更新表(假设您具有必要的访问权限)。