我想查看简单的选择顶部(n)的查询计划。每当我改变n(我得到的记录数)时,查询计划会发生变化,Select Top 10特别会导致性能问题,如果查询计数少于10或大于10,查询将顺利运行。不同的SQL查询计划与选择顶部(n)
查询由实体框架(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特别是导致性能问题?
我不能分享图片的是,这里是链接:
http://imageshack.us/photo/my-images/407/top10a.png/
http://imageshack.us/photo/my-images/580/top20x.png/
什么是你的**问题**? – Luv
你可以发布执行计划吗?这将是非常有帮助的。 我的第一个想法: SQL Server使用它的统计信息更改它的执行计划。你可以假设更新统计。 –
执行计划添加到我的问题上面。 –