D
Dereck
I have an ADO.NET Entity Framework generated query which seemed a bit
slow, so I ran SQL Profiler and confirmed that the query was taking
12-13 seconds for each execution. In the profiler the event is an
RPC. If I take the command text from the profiler and run it in
Management Studio, the execution takes 1 second (about 500
milliseconds in profiler). The query never changes, and I have run it
repeatedly hundreds of times with the same disturbing results. When I
run it from Management Studio I noticed it does not come across as an
RPC, but a normal TSQL batch. Any ideas why the RPC takes so much
longer?
Here is an outline of what the query looks like:
exec sp_executesql N'SELECT TOP (1)
[Project1].[C1] AS [C1],
.....
FROM ( SELECT
[Filter1].[AcctID] AS [AcctID],
....
1 AS [C1]
FROM (SELECT [Extent1].[AcctID] AS [AcctID], ....
FROM [dbo].[Account] AS [Extent1]
LEFT OUTER JOIN [dbo].[AccountStatus] AS [Extent2] ON [Extent1].
[AcctStatusID] = [Extent2].[AcctStatusID]
WHERE .... ) AS [Filter1]
INNER JOIN [dbo].[Client] AS [Extent3] ON [Filter1].[ClientID] =
[Extent3].[ClientID]
WHERE (.... = @AccountStatus) AND (.... = @ClientId)
) AS [Project1]
ORDER BY [Project1]..... DESC',N'@AccountStatus int,@ClientId
int',@AccountStatus=1,@ClientId=1
slow, so I ran SQL Profiler and confirmed that the query was taking
12-13 seconds for each execution. In the profiler the event is an
RPC. If I take the command text from the profiler and run it in
Management Studio, the execution takes 1 second (about 500
milliseconds in profiler). The query never changes, and I have run it
repeatedly hundreds of times with the same disturbing results. When I
run it from Management Studio I noticed it does not come across as an
RPC, but a normal TSQL batch. Any ideas why the RPC takes so much
longer?
Here is an outline of what the query looks like:
exec sp_executesql N'SELECT TOP (1)
[Project1].[C1] AS [C1],
.....
FROM ( SELECT
[Filter1].[AcctID] AS [AcctID],
....
1 AS [C1]
FROM (SELECT [Extent1].[AcctID] AS [AcctID], ....
FROM [dbo].[Account] AS [Extent1]
LEFT OUTER JOIN [dbo].[AccountStatus] AS [Extent2] ON [Extent1].
[AcctStatusID] = [Extent2].[AcctStatusID]
WHERE .... ) AS [Filter1]
INNER JOIN [dbo].[Client] AS [Extent3] ON [Filter1].[ClientID] =
[Extent3].[ClientID]
WHERE (.... = @AccountStatus) AND (.... = @ClientId)
) AS [Project1]
ORDER BY [Project1]..... DESC',N'@AccountStatus int,@ClientId
int',@AccountStatus=1,@ClientId=1