|
|
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
|
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
ojek · 如何对SQL结果进行分组和编号? 1 年前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 1 年前 |
|
|
Sax · 规范化Google表格(第一步) 1 年前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |