我在做一些测试和直LINQ到SQL查询的运行速度比如果通过LINQ查询存储过程比LINQ查询慢吗?
调用存储过程在SQL Server Profiler中一个通用的LINQ查询
var results = from m in _dataContext.Members
select m;
了至少快80%只有19毫秒,而不是一个存储过程
var results = from m in _dataContext.GetMember(userName)
select m;
(GetMember
被存储的过程)做历时100毫秒
这是为什么?
编辑:
直LINQ看起来像这样在探查
SELECT
[t1].[MemberID], [t1].[Aspnetusername], [t1].[Aspnetpassword],
[t1].[EmailAddr], [t1].[DateCreated],
[t1].[Location], [t1].[DaimokuGoal], [t1].[PreviewImageID],
[t1].[value] AS [LastDaimoku],
[t1].[value2] AS [LastNotefied],
[t1].[value3] AS [LastActivityDate], [t1].[IsActivated]
FROM
(SELECT
[t0].[MemberID], [t0].[Aspnetusername], [t0].[Aspnetpassword],
[t0].[EmailAddr], [t0].[DateCreated], [t0].[Location],
[t0].[DaimokuGoal], [t0].[PreviewImageID],
[t0].[LastDaimoku] AS [value], [t0].[LastNotefied] AS [value2],
[t0].[LastActivityDate] AS [value3], [t0].[IsActivated]
FROM
[dbo].[Members] AS [t0]) AS [t1]
WHERE
[t1].[EmailAddr] = @p0
存储过程是这样的
SELECT Members.*
FROM Members
WHERE dbo.Members.EmailAddr = @Username
所以你看这个存储过程的查询要简单得多。但是它的速度更慢......对我来说毫无意义。
它看起来不像你的两个查询做同样的事情。第二个参数(大概是为了限制结果),其中第一个显然只是获得所有行。对于初学者,你确定SQL是一样的吗? – 2008-11-04 19:21:33
存储过程中的sql与linq查询的功能相同...本质上与你是正确的参数...通过linq查询返回所有行比在存储过程中返回单个行更快。 – dswatik 2008-11-04 19:23:53