2013-05-06 30 views
0

我想找到最快的方法(处理数千行)来执行以下查询:带分页符的SQL Server分页

我有一个名为“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

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

+0

设置一个[小提琴](http://sqlfiddle.com),发布,让我们一起玩吧? – hd1 2013-05-06 20:41:51

+1

另外:在问题中放置样本数据和表格形式的结果优于链接到外部图像。 – HABO 2013-05-06 20:58:40

+1

什么版本的SQL Server。 – RBarryYoung 2013-05-06 21:10:35

回答

0

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