1
10
在MS SQL Server 2005及更高版本上, ROW_NUMBER() 似乎起作用: T-SQL: Paging with ROW_NUMBER()
|
2
7
我建议要么使用LINQ,要么尝试复制它的功能。我有一个应用程序,我使用Linq Take和Skip方法来检索页面数据。代码如下所示:
运行SQL Server Profiler会发现Linq正在将此查询转换为SQL,类似于:
简单英语:
|
3
5
在数据库中进行分页的基本方法有两种(我假设您使用的是SQL Server): 使用偏移量
其他人解释了
如果您使用的是SQL Server 2012,并且向后兼容性不是问题,那么您可能更喜欢使用该子句,因为在某些情况下,SQL Server将更优化地执行该子句。 使用Seek方法在SQL中有一种完全不同的、速度更快但不太为人所知的分页方法。如中所述,这通常称为“Seek方法”。 this blog post here .
这个
使用上面的方法,如果没有先获取前面40条记录,就不能立即跳到第4页。但通常情况下,你不想跳那么远。相反,您会得到一个更快的查询,根据您的索引,该查询可能能够在恒定时间内获取数据。另外,无论基础数据是否发生变化(例如,在第1页上,而在第4页上),您的页面都保持“稳定”。 例如,在Web应用程序中延迟加载更多数据时,这是实现分页的最佳方法。 注意,“seek方法”也被称为 keyset paging . |
4
3
Linq与.NET 3.5中的lambda表达式和匿名类相结合 巨大地 简化了这类事情。 查询数据库:
每页记录数:
按任意列排序:
仅从服务器获取所选字段:
这将创建一个静态类型的匿名类,您可以在其中访问其属性:
默认情况下,查询的结果是延迟加载的,因此在实际需要数据之前,您不会与数据库通信。NET中的Linq还通过保留所做任何更改的DataContext,并且只更新所更改的字段,极大地简化了更新。 |
5
1
Oracle解决方案:
|
6
1
我在MS SQL 2005中使用了一些解决方案。 其中一个是row_number()。但就我个人而言,我不喜欢row_number(),因为它不适用于大的结果(我所处理的数据库非常大——超过1TB的数据在第二秒内运行数千个查询——你知道——大的社交网站)。 这是我最喜欢的解决方案。 我将使用T-SQL的伪代码。 让我们找到按名字、姓氏排序的第2页用户,其中每一页有10条记录。
|
7
1
|
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
Dansih · .Net核心自定义身份验证方案 2 年前 |
lolorekkk · 面板插入。NET WinForm 2 年前 |