2012-08-15 142 views
0

我正在尋找做一些有效的分頁,並發現這個鏈接,說「聖盃」是最好的辦法。SQL Server尋呼和聖盃

http://www.sqlservercentral.com/articles/T-SQL/66030/

是隻是被用來作爲一個例子的表,或者是它實際上解決方案的一部分。我的意思是你如何用一個有許多連接,相同方法的表來做到這一點?有人可以發表一個例子嗎?

+0

只需選擇任何一組表格? – 2012-08-15 21:29:27

回答

1

表「[INFORMATION_SCHEMA] .columns」僅作爲示例使用。

我會使用相同的方法的表有很多連接。只要確保你有適當的索引。

「Holy Grial」解決方案只是爲您提供分頁結果以及指示行總數的列,而無需額外開銷。您可以在另一個查詢中獲取行的總數。

注意文章的結論年代:

....這種方法是最適合於從複雜 查詢,其中I/O是主要的瓶頸較小的結果集。 Jeff Moden,Peso和 這裏的其他人已經指出,對於更大的結果集,您節省的I/O成本 遠遠超過CPU成本。

+0

所以爲了獲得這種性能提升,ROW_NUMBER()OVER(ORDER BY table_name,column_name)AS seq, ROW_NUMBER()OVER(ORDER BY table_name DESC,column_name desc)AS totrows,兩個row_number是相反順序嗎? – 2012-08-15 22:27:09

+0

是的。這只是爲了減少開銷。只需一個查詢即可獲得分頁結果和總行數。例如:「產品」表有5000行。我想看第20頁,有100行。這將是1901至2000行。在同一個查詢中使用ROW_NUMBER()兩次,可以獲得總行數(5000)。其他方式,你必須爲此寫另一個查詢。 – Nathan 2012-08-15 22:56:23