単純な選択 Top (n) のクエリ プランを表示しようとしています。n (取得しているレコードの数) を変更するたびにクエリ プランが変更され、上位 10 を選択すると特にパフォーマンスの問題が発生し、10 未満または 10 を超えるクエリはスムーズに実行されます。
違いがある場合、クエリは Entity Framework (4.2) によって生成されます。
クエリは次のとおりです。
exec sp_executesql N'SELECT TOP (10)
[Project1].[Id] AS [Id],
[Project1].[DateReceived] AS [DateReceived],
[Project1].[Status] AS [Status],
[Project1].[Subject] AS [Subject],
[Project1].[Description] AS [Description],
[Project1].[Path] AS [Path],
[Project1].[C1] AS [C1],
[Project1].[C2] AS [C2],
[Project1].[C3] AS [C3],
.
.
.
.
.
.
.
WHERE [Project1].[row_number] > 0
ORDER BY [Project1].[DateReceived] DESC',N'@p__linq__0 int,@p__linq__1 int,@p__linq__2 datetime2(7),@p__linq__3 datetime2(7),@p__linq__4 nvarchar(4000),@p__linq__5 nvarchar(4000),@p__linq__6 nvarchar(4000),@p__linq__7 nvarchar(4000)',@p__linq__0=-1,@p__linq__1=-1,@p__linq__2='2013-03-15 00:00:00',@p__linq__3='2013-04-15 23:59:55',@p__linq__4=N'ALL',@p__linq__5=N'ALL',@p__linq__6=N'',@p__linq__7=N'%%'
TOP 10 が特にパフォーマンスの問題を引き起こしているのはなぜですか?
まだ画像を共有できません。リンクは次のとおりです。