仅在我的机器上运行缓慢查询

时间:2012-10-25 15:29:06

标签: sql-server sql-server-2005 sql-server-2008-r2

我正在针对Microsoft SQL Server 2005运行一个简单的 select * from table 查询。该表包含大约41000条带有PK聚簇索引的记录,而我正在使用Windows集成身份验证。

  • 当我使用Microsoft SQL Server Management Studio在我的计算机上运行此查询时,查询在大约1小时45分钟内完成。我尝试从网格切换到文本输出,使用SQLCMD从命令行运行它还尝试在查询之前执行DBCC USEROPTIONSDBCC DROPCLEANBUFFERSDBCC FREEPROCCACHE ...没有改变查询速度。

  • 当我使用我的凭据从同事的工作站运行它时,查询会立即正常完成。如果同事使用他们的凭证在我的工作站上运行查询,则查询速度非常慢,如上所述。

我已经没有想法如何解决这个问题了。不知何故,问题似乎与我的机器有关,但我无法理解它。还请考虑以下事项:

  • 我检查过并确保我的计算机上没有启用ODBC跟踪(Win7-64bit)。我已经使用Microsoft Management Studio 2008 R2安装了SQL Server客户端工具,这就是我用来查询数据库的内容。
  • 我还使用VS2010运行相同的sql查询,结果完全相同。
  • 我针对同一个表/数据库的副本运行查询,但是在不同的服务器上,问题仍然存在。
  • 当我运行 select count(*) from table 时,查询正常完成,没有任何延迟。
  • 当我使用SQL Server Profiler运行跟踪时,查询只是一个长时间运行的查询 - 我看不到任何异常。
  • 当我使用文本输出在MS SQL Server Management Studio中运行查询时,我可以看到在大约85条记录的初始缓冲区之后,后续记录一次到达大约400条记录。例如85 - > 407 - > 804 - > 1210 - > 1605 - > 1897年 - > 2161 - > 2753 - > 3051 - > 3342 - > 3676 - > 4002等。比较同时工作站,你可以看到数据到达时连续流绘制的记录!???
  • 我还比较了我的机器上的实际查询执行计划和查询正常运行的其他查询执行计划 - 它们看起来完全相同。

任何人都可以理解这里可能出现的问题吗?为什么从我的机器上运行它的速度非常慢但是它从另一个工作站正常执行?... 是否有任何建议的操作步骤来解决此问题?

提前感谢大家!

2 个答案:

答案 0 :(得分:1)

我发现了问题 - 这是一个网络适配器驱动程序更新。一旦我回滚驱动程序,查询按预期执行没有延迟! enter image description here

我花了很长时间来解决这个问题。为了记录我的网卡是“英特尔(R)82579LM千兆网络连接”流氓网络驱动程序来自Windows更新。 我的工作站是HP 8200 Elite。驱动程序回滚后,我下载了从HP支持站点安装的最新网络驱动程序,这似乎是解决方案 - 到目前为止,我没有遇到运行缓慢的SQL查询的问题:)

答案 1 :(得分:0)

你是否硬连线到局域网?无线上网?检查您的网络延迟,您提供的所有内容似乎都很正常。 Ping您的数据库服务器以检查它。

我要检查的下一件事是确保当时服务器或数据库上没有其他任何东西在运行。防病毒软件,测试,任何可能减慢数据库速度的东西。此外,您是否通过虚拟框运行此查询?从本地服务器和远程盒中获取执行计划,并将它们并排比较。它们应该是一样的。如果他们不是,你知道有一个问题。

还要检查每个连接执行查询的用户SET选项。这可能会产生影响。如果这些都不成问题,我的下一个猜测是硬件或配置失败