我正在使用SQL Server 2008作为后端的应用程序。每天结束时,我都要备份数据库并将其还原到笔记本电脑上,这样我才能继续在家中进行开发。两种设置都可以正常工作,唯一的例外是,与在工作中查询远程服务器时相比,在本地计算机上运行的查询所花的时间要长得多(几秒钟或几秒钟)。

我通过名称指定服务器,并使用“。”连接到我的本地实例。该应用程序是使用集成安全性通过ADO连接的Excel VBA。

我不知道服务器的规格,但我想它们比我的笔记本电脑要好,所以这可能是其中一些差异的原因。但是,我的开发笔记本电脑很不错(Windows 7、2.4GHz Core i5、64位,8GB RAM),此时的数据库很小。

为什么性能会如此显着不同?我应该在笔记本电脑上看些什么以提高性能?

编辑:事实证明查询不是错误。在我的笔记本电脑上,往返服务器获取数据的时间要长得多,而且我错误地认为这实际上是连接,而是查询。当我通过SSMS连接到数据库引擎时,在任何一个环境中花费的时间都差不多,但是当我使用ADO进行连接时,本地连接的时间更长。知道什么会导致这种延迟吗?

我将Mitch的答复标记为答案(有助于解决查询时间和环境中的差异),并将创建一个有关连接延迟的新问题。

更新:这是我有关SE.DBA的问题的链接,该问题与本地主机上连接的可怕性能有关:https://dba.stackexchange.com/q/18231/2848

最佳答案

有疑问的查询在两种环境中是否具有相同的查询计划?

第一次运行时本地速度慢,而第二次运行时速度快吗? (如果是这样,则可能是将页面加载到内存中的物理I / O速度有所不同)

第一步,我将在两个环境中重建所有索引并更新列统计信息,然后重新比较查询计划:

use myDb
go

exec sp_msforeachtable "dbcc dbreindex('?')"
go

exec sp_msforeachtable "update statistics ? with fullscan, columns"
go


关于生产的通常注意事项(您声明数据库很小,因此运行这些命令应该花很长时间)。

10-04 12:29
查看更多