SQL Server分页与分页符

时间:2013-05-06 19:47:03

标签: sql sql-server pagination sql-server-2012

我想找到最快的方法(处理数千行)来执行以下查询:

我有一个名为“Flights”的SQL Server表。这是表格的结构:

  • ID:行的标识
  • FlightDate:行日期
  • IsLastLineOfPage:如果该行是页面的最后一位,则等于1
  • ID_User:与其他用户表的链接

我想找到一个非常快速的查询来选择所有列,按日期和ID排序,有两个名为“RowNumber”和“PageNumber”的新列。这就像一个分页,每页5行。如果IsLastLineOfPage的值= 1,那么即使页面未满,下一行“PageNumber”也必须递增,“RowNumber”重置为1.例如查询结果WHERE ID_User = 5:

此处链接:http://i.stack.imgur.com/vyZh6.png

我不知道这样做...谢谢!

1 个答案:

答案 0 :(得分:0)

由于结果集是有序的,很可能它永远不会真的很快。确保事物保持尽可能快的一种方法是确保尽可能少的行具有完全相同的日期。向用于排序的列添加索引也可能。要获得结果(取决于您使用的语言/ SQL驱动程序),最好使用结果集游标。游标会在服务器上收集结果,但一次只能将它们发送回客户端一页。您通常可以指定页面大小。但是,这是如何完成的,特定于语言和驱动程序。