如何使用SQL Server OFFSET&;FETCH FIRST与实体框架5

本文关键字:FIRST FETCH 实体 框架 amp SQL 何使用 Server OFFSET | 更新日期: 2023-09-27 18:28:22

OFFSET&SQL Server 2012中引入的FETCH FIRST关键字在EntityFramework 5和Linq to SQL?

当使用SELECT * FROM tables ORDER BY stime DESC OFFSET 0 ROWS FETCH FIRST 10 ROWS ONLY而不是var a= db.table.Skip(0).Take(10); 时,它显示出50%的性能改进

如何使用SQL Server OFFSET&;FETCH FIRST与实体框架5

简短的回答是否定的,EF5不支持它,但正如ADO.NET博客上所指出的,实体框架的6.1.2版本刚刚发布。6.1.2中的一个新功能是支持OFFSET。。FETCH SQL Server 2012+分页语法。

当您购买类似ORM的实体框架时,您的查询生成是外包的(出于完全合理的原因)。EF是使用带有Row_Number()的"旧"CTE样式查询,还是使用较新的Fetch/Offset是一个实现细节。微软可以随时更新EF代码,并将查询生成更改为使用其中一个。参考

如果您想控制查询生成,您可以:

使用EF的"存储过程映射"功能使用存储过程直接用EF(我经常做的事情)编写ADO/SQL你自己,或者使用一个更有限的微形态,比如massive/PetaPoco So这有关系吗?

好吧,对于编写查询的开发人员来说,新语法将是令人欣慰的是。另一方面,似乎没有旧CTE方法和新CTE方法之间的实际性能差异语法。因此,从英孚的角度来看——并非如此。我们承担了使用EF的开销,分页方法可能不会是你的休息时间指向折射率