我有这样的要求
SELECT
[EstimateId],
[CreationUserId],
[EstimateStatusValueId],
[LanguageId],
[LocationId],
[EstimatorUserId],
[FilterUnitSystemTypeId],
[EstimateNumber],
[RevisionNumber],
[CreationDate],
[ModificationDate],
[ProjectDescription],
[IsBsdq],
[ClosingDate],
[ClosingTime],
[ClosingUpdatedOn],
[DeadLineDate],
[IsReceived],
[Inclusion],
[Exclusion],
[Misc],
[Note],
[WorkDeadLines],
[Comments],
[Validity],
[PlansLocation],
[PlansReceivedFrom],
[Price]
FROM [Estimate].[Estimates]
ORDER BY [ClosingDate] ASC, [ClosingTime] ASC
当我在SSMS中运行此查询时,我的执行时间为953ms,但是当我从C#中的Linq查询中运行此查询时,我的执行时间为1813ms。
Linq查询使用“ .Net SqlClient数据提供程序”,并针对EntityFramework(EDMX文件)发出。这可能是一个问题吗?
有谁知道为什么我在相同请求但针对同一数据库从不同上下文执行的那些请求的执行时间之间有很大差异?
我验证了两个请求的所有执行计划,并且它们使用相同的索引来满足各自的查询。
为了查看C#请求的执行计划,我使用SQL事件探查器捕获了Show Plan XML事件,并将其与SSMS之一进行比较,并且两者相同。
只是一个小问题-为什么您在没有任何搜索条件的情况下选择所有表的数据?您是否真的需要应用程序中的所有数据而没有任何过滤?
—
玛丽安(Marian)
是的,这是我需要的功能,但是该功能不会经常使用。我知道在没有where子句的情况下发出大查询并不是最佳选择。
—
Nico
无论如何,我关心的不是请求本身,而是执行时间之间的差异。我向您显示此查询,但所有查询都给出相似的结果。为什么呢
—
Nico