gpt4 book ai didi

c# - 将SQL查询结果数据提前加载到缓存中

转载 作者:太空宇宙 更新时间:2023-11-03 22:22:09 27 4
gpt4 key购买 nike

我有以下情况:

  • .net 3.5 WinForm 客户端应用程序访问 SQL Server 2008
  • 表单经常使用一些返回相对大量数据的查询
  • 用户使用本地 SQL Express 并至少每天重新启动他们的机器
  • 其他用户正在通过慢速网络连接进行远程工作

问题是重启后,用户第一次打开此表单时,查询速度非常慢,在快速机器上大约需要 15 秒才能执行。之后相同的查询只需要 3 秒。当然,这是因为没有数据被缓存,必须先从磁盘加载。

我的问题:
是否可以将需要的数据强制提前加载到SQL Server缓存中?

注意事项
我的第一个想法是在应用程序启动时在后台工作程序中执行查询,这样当用户启动表单时,查询将已经被缓存并直接快速执行。但是,我不想将查询结果加载到客户端,因为某些用户正在远程工作或网络速度较慢。
所以我想只是从存储过程中执行查询并将结果放入临时表中,这样就不会返回任何内容。
事实证明,一些结果集正在使用动态列,所以我无法创建相应的临时表,因此这不是解决方案。

你碰巧有其他想法吗?

最佳答案

您确定这是正在创建的执行计划,还是正在进行的服务器内存缓存?也许第一个查询加载了相当多的数据,但后续查询可以使用已经缓存的数据,因此运行得更快。我从未见过执行计划的生成时间超过一秒,所以我怀疑计划本身不是原因。

您是否尝试过对您的查询运行索引调整向导?如果是计划导致了问题,也许一些统计数据或额外的索引会帮助您解决问题,并且优化器非常擅长推荐东西。

关于c# - 将SQL查询结果数据提前加载到缓存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2699397/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com