I ran some tests, and direct LINQ-to-SQL queries ran at least 80% faster than when calling stored procedures using a LINQ query
In SQL Server Profiler, general LINQ query
var results = from m in _dataContext.Members
select m;
it took only 19 milliseconds unlike the stored procedure
var results = from m in _dataContext.GetMember(userName)
select m;
( GetMemberis a stored procedure), executing the same request that took 100 milliseconds
Why is this?
Edit:
Direct LINQ looks like this in Profiler
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
The stored procedure is
SELECT Members.*
FROM Members
WHERE dbo.Members.EmailAddr = @Username
So you see that requesting a stored procedure is much simpler ... but still slower ... it makes no sense to me.