.net - SQL Server 查询仅在第一次运行时确实很慢

标签 .net sql-server performance windows-7 windows-7-x64

有点奇怪的问题...当我重新启动计算机后第一次启动 .NET 应用程序时,SQL Server 查询非常慢...当我暂停调试器时,我注意到它一直在获取响应从查询中。这种情况仅在连接到远程 SQL Server (2008) 时发生...如果我连接到本地计算机上的 SQL Server,那就没问题了。另外,如果我重新启动应用程序,即使脱离远程 SQL 服务器,它也会快速运行,并且后续运行也很好。唯一的问题是当我重新启动计算机后第一次连接到远程 SQL 服务器时。更重要的是,我什至注意到同样连接到远程 SQL 服务器的第 3 方应用程序(也是 .NET)也有同样的行为。

另一条信息...自从我将计算机从 XP 升级到 Win7(64 位)后,这种情况才开始发生。此外,我团队中升级到 Win7 的其他开发人员也看到了相同的行为(无论是我们正在开发的应用程序还是第 3 方 .NET 应用程序)。

编辑:也复制到https://serverfault.com/questions/100141/sql-server-queries-are-really-slow-only-on-first-run由于评论者的建议

最佳答案

您很可能正在享受缓存的效果。当您第一次运行查询时,SQL 会生成一个执行计划,然后缓存它。如果您再次运行查询,它会记住执行计划,并且在某些情况下您会看到速度提升。因此,如果您正在测试查询,则需要清除缓存。以下是我所做的。

引自 Devx 网站 ( DEVx Tip )

运行 DBCC DROPCLEANBUFFERS,这会清除缓存中的所有数据。 然后运行 ​​DBCC FREEPROCCACHE,这会清除存储过程缓存。

HTH

关于.net - SQL Server 查询仅在第一次运行时确实很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2014814/

相关文章:

c# - 使用 .Net 缓存时应该添加 Locks 还是 TransactionScope?

c# - .NET 反射 - 如何从 ParameterInfo 中获取 "real"类型

sql-server - SQL Server 如何确定序列中的下一个值?

sql-server - 将表格的两列合并到第三列中

c++ - 我怎样才能更好地学会使用“"not pay for what you don't”?

java - 超 SQL (HSQLDB) : massive insert performance

c# - 根据for循环位置制作字典的键

SQL 联合但过滤掉部分重复

c++ - 嵌入式编程中宏值之间的比较是否不好?

c# - VS 安装项目 - .Net Framework 3.5 或更高版本的启动条件