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

Java SQL Server-如何确保缓存查询结果?,java,sql,sql-server,caching,prepared-statement,Java,Sql,Sql Server,Caching,Prepared Statement,我有一个应用程序,它在登录后的第一页向用户显示大量数据。对数据库的查询需要很长时间,比如说10秒。数据库在SQLServer2008中,查询运行在Java中构造为一个准备好的语句。但是,需要显示的数据通常每天只更改一次。所以-如果我可以缓存这个结果,并显示得更快,那将是理想的 然而,我并不确定我需要做什么来减少这10秒的等待时间——每次我加载页面时都会发生同样的延迟。是否需要执行某些操作以确保SQL Server将结果缓存到查询中?当然,在一分钟内第二次加载时,它似乎不会更快——我应该从哪里开始

我有一个应用程序,它在登录后的第一页向用户显示大量数据。对数据库的查询需要很长时间,比如说10秒。数据库在SQLServer2008中,查询运行在Java中构造为一个准备好的语句。但是,需要显示的数据通常每天只更改一次。所以-如果我可以缓存这个结果,并显示得更快,那将是理想的

然而,我并不确定我需要做什么来减少这10秒的等待时间——每次我加载页面时都会发生同样的延迟。是否需要执行某些操作以确保SQL Server将结果缓存到查询中?当然,在一分钟内第二次加载时,它似乎不会更快——我应该从哪里开始探索呢

非常感谢您的帮助

你应该调查一下

它们允许您将查询结果(以视图的形式)存储在索引中,优化器可以间接或直接访问查询结果(即,优化器“知道”它拥有数据,并且除了针对该视图的查询之外,还会将其用于查询)

链接中列出了许多约束条件

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


我猜您的查询是复杂的和/或包含聚集字段和分组,即使数据页已经缓存在内存中,也将“强”>始终> /强>开销。

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

您可能应该研究应用程序缓存,因为您知道数据可以保存多长时间。谢谢,这听起来是个好主意。但是,在看得太远之前,在db配置方面,我没有明显遗漏什么东西可以让我的第二次db调用looooads更快???不,显然首先要尝试的是简单的旧查询选项最大化,而不是数据库缓存配置。好吧,假设我可以通过查询优化将查询时间从10秒缩短到5秒-我仍然更希望结果以某种方式缓存在某个地方,并且希望返回的速度比5秒快得多。或者我是不是找错了树了?@桂格-看到我的答案了。你不会吧请描述您的查询,但如果它很复杂和/或包含聚合,则索引视图可能适合您的需要。我确实有必要访问该视图,这实际上已经在我的脑海中浮现。但是-例如,与应用程序缓存相比,这有什么好处?我可能错了,但我不知道SQL Ser有一种简单的兑现机制ver(自动发生的情况除外)。此外,根据我在索引视图上所读到的内容,请小心使用它们,因为它们可能会导致维护问题—DBA通常不鼓励使用它们。下面是一篇关于索引视图的好文章: