2013-05-06 53 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驅動程序),最好使用結果集遊標。光標在服務器上收集結果,但一次只發送一個頁面給客戶端。您通常可以指定頁面大小。儘管如此,但語言和驅動程序是特定的。