If I want to retrieve records from 20 to 39, or from 40 to 59 from an MSSQL Table.
Since I'm using MVC and EF4, is performance the same if I just do a Linq query and Skip() and Take() procedure to request paging ....or is it better to do it on a GetList() Stored Procedure itself?
If you execute this linq query:
var data = context.Posts.OrderBy(p => p.Id).Skip(20).Take(20).ToList();
It will produce this 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
It is not such nice like custom SQL you would write in your stored procedure but in the meaning of performance it is the same. Pagining is done on database.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With