SQL表分页PERFORMANCE …是EF4 Linq SKIP TAKE在性能上与使用TSQ
发布时间:2020-12-12 08:52:57 所属栏目:MsSql教程 来源:网络整理
导读:如果我要从MSSQL表中检索20到39之间的记录,或从40到59. 因为我使用MVC和EF4,性能是一样的,如果我只是做一个Linq查询和Skip()和Take()过程来请求分页….或者更好的做一个GetList()存储过程本身? 解决方法 如果你执行这个linq查询: var data = context.Posts.
如果我要从MSSQL表中检索20到39之间的记录,或从40到59.
因为我使用MVC和EF4,性能是一样的,如果我只是做一个Linq查询和Skip()和Take()过程来请求分页….或者更好的做一个GetList()存储过程本身? 解决方法如果你执行这个linq查询:var data = context.Posts.OrderBy(p => p.Id).Skip(20).Take(20).ToList(); 它会产生这个SQL: SELECT TOP (20) [Extent1].[Id] AS [Id],[Extent1].[Text] AS [Text] FROM ( SELECT [Extent1].[Id] AS [Id],[Extent1].[Text] AS [Text],row_number() OVER (ORDER BY [Extent1].[Id] ASC) AS [row_number] FROM [dbo].[Posts] AS [Extent1] ) AS [Extent1] WHERE [Extent1].[row_number] > 20 ORDER BY [Extent1].[Id] ASC 这不是像你在存储过程中写入的自定义SQL那样好,但是性能的含义是一样的.分页在数据库上完成. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |