在stackoverflow上有很多sql server分頁問題,他們中的很多人都在談論使用ROW_NUMBER() OVER (ORDER BY ...) AND CTE
。一旦進入成千上萬的行並開始在非主鍵值上添加排序並添加自定義的WHERE子句,這些方法就會變得非常不便。我有一個包含數百萬行的數據集,我試圖通過自定義排序和篩選來進行翻頁,但是我的性能很差,甚至在我排序和篩選的所有字段上都有索引。我甚至儘可能在每個索引中包含我的SELECT列,但這幾乎沒有幫助,並嚴重臃腫了我的數據庫。Microsoft SQL Server尋呼
我注意到,無論您點擊什麼排序標準或頁碼,stackoverflow分頁只需要大約500毫秒。任何人都知道如何在數百萬行的SQL Server 2008中高效地進行分頁工作?這將包括儘可能有效地獲取總行數。
我的當前查詢具有完全相同的邏輯有關尋呼這個計算器的問題: Best paging solution using SQL Server 2005?
您可以發佈查詢的任何機會;一般原則是一個很好的人,但他在現實世界中存在問題;) – u07ch 2011-03-17 07:14:00
不在每個想要排序(或篩選)的列上添加索引,有幫助嗎?這似乎很明顯,但我不知道你是否嘗試過。 – bart 2011-03-17 08:05:53
我確實在所有列上都有索引。超過前幾千的分頁後,查詢時間開始線性上升... – jjxtra 2011-06-14 05:36:29