【发布时间】:2011-12-13 18:21:50
【问题描述】:
我正在新设置的 Windows 7 桌面上开发 .NET 4.0 应用程序。在该应用程序中,对远程数据库的查询非常慢。相同的应用程序在我迄今为止使用过的笔记本电脑上运行得非常快。我现在使用的台式机比笔记本电脑快很多。我正在使用 VPN 连接连接到远程数据库服务器(与笔记本电脑上的相同)。它在 IIS 和 Cassini 中都很慢。
我应该补充一点,应用程序正在使用实体框架进行数据访问。
有人知道问题可能是什么吗?
更新 1: 好吧,这真的越来越奇怪了。我在笔记本电脑和台式机上查看了 SQL Server Profiler 中的查询。他们都是一样的。但是在我的桌面上,查询需要越来越长的时间来执行。因此,我在桌面上启动了 Management Studio,并执行了一个从 SQL Server Profiler 获取的查询。它跑得非常快(不到一秒)。但是当我再次执行它时,它花了 1 秒钟。然后是 2 秒,然后是 4 秒(看到模式了吗?)。我无法终生弄清楚是什么原因造成的。这是查询:
select top (2) [Extent1].[RequestID] AS [RequestID],
[Extent1].[RequestDate] AS [RequestDate],
[Extent1].[RequestTitle] AS [RequestTitle],
[Extent1].[RequestTypeID1] AS [RequestTypeID1],
[Extent1].[RequestTypeID2] AS [RequestTypeID2],
[Extent1].[SubjectMatterID1] AS [SubjectMatterID1],
[Extent1].[SubjectMatterID2] AS [SubjectMatterID2],
[Extent1].[ProviderID] AS [ProviderID],
[Extent1].[Description] AS [Description],
[Extent1].[Notes] AS [Notes],
[Extent1].[RequestedBy] AS [RequestedBy],
[Extent1].[OrganisationID] AS [OrganisationID],
[Extent1].[ProgramID] AS [ProgramID],
[Extent1].[StatusID] AS [StatusID],
[Extent1].[MethodID] AS [MethodID],
[Extent1].[StaffID] AS [StaffID],
[Extent1].[TopicID] AS [TopicID],
[Extent1].[RequestCreatedBy] AS [RequestCreatedBy],
[Extent1].[RequestCreatedOn] AS [RequestCreatedOn],
[Extent1].[RequestModifiedBy] AS [RequestModifiedBy],
[Extent1].[RequestModifiedOn] AS [RequestModifiedOn],
[Extent1].[RequestedByExtraID] AS [RequestedByExtraID]
FROM [dbo].[Request] AS [Extent1]
但是等等!越来越诡异了!无论我多久执行一次,以下查询总是花费相同的时间(不到一秒):
select top (2) * From request
我在这件事上浪费了很多时间。如果有人有任何指点,你会永远在我的酷人书中。
更新 2 如果我在 management studio 中“包含实际执行计划”,无论我多久执行一次,查询总是非常快。
【问题讨论】:
-
似乎是网络/vpn 问题。 Ping 也很慢?
-
不,40 毫秒。管理工作室也很快。
-
你如何建立联系? ADO、Linq2SQL、EF、其他?标准查询,例如 select 或 SProcs?
-
英孚。标准查询和 SP(通过函数导入)。
-
嗯,我在我们的应用程序中遇到过类似的情况。请注意,ManagementStudio 结果可能会导致您得出错误的结论。