【发布时间】:2011-02-11 13:35:33
【问题描述】:
我有以下情况:
- .net 3.5 WinForm 客户端应用程序访问 SQL Server 2008
- 表单经常使用一些返回相对大量数据的查询
- 用户至少每天都在使用本地 SQL Express 并重新启动他们的计算机
- 其他用户正在通过慢速网络连接远程工作
问题在于,在重新启动后,用户第一次打开此表单时查询非常慢,并且在快速机器上执行大约需要 15 秒。之后相同的查询只需要 3 秒。当然,这是因为没有数据被缓存,必须先从磁盘加载。
我的问题:
是否可以提前将所需数据强制加载到 SQL Server 缓存中?
注意
我的第一个想法是在应用程序启动时在后台工作人员中执行查询,这样当用户启动表单时,查询就已经被缓存并直接快速执行。但是,我不想将查询结果加载到客户端,因为某些用户正在远程工作或网络速度较慢。
所以我想只是从存储过程中执行查询并将结果放入临时表中,这样就不会返回任何内容。
原来,一些结果集正在使用动态列,所以我无法创建相应的临时表,因此这不是一个解决方案。
你有什么别的想法吗?
【问题讨论】:
标签: c# .net sql-server caching