gpt4 book ai didi

tsql - SQL 表分页性能 ...EF4 + Linq SKIP +TAKE 与使用 TSQL 参数在 SQL 表上请求 "paging"的性能相同吗?

转载 作者:行者123 更新时间:2023-12-02 12:17:46 26 4
gpt4 key购买 nike

如果我想从 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 那么好,但在性能方面是相同的。分页是在数据库上完成的。

关于tsql - SQL 表分页性能 ...EF4 + Linq SKIP +TAKE 与使用 TSQL 参数在 SQL 表上请求 "paging"的性能相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com