同事專案的SQL版本是SQL 2016,可以使用SQL 2012 在ORDER BY的延伸功能Offset Fetch,因為某些因素,暫時還是用舊的方式分頁,來幫同事試試新的做法,同時也用兩個小技巧,回傳總筆數及資料序號再來比較。
同事專案的SQL版本是SQL 2016,可以使用SQL 2012 在ORDER BY的延伸功能Offset Fetch,因為某些因素,暫時還是用舊的方式分頁,來幫同事試試新的做法,同時也用兩個小技巧,回傳總筆數及資料序號再來比較。
DB分頁處理時除了回傳總筆數的需求,有時候還得回傳資料在整體資料中的序號,雖然我們用了Offset Fetch,但還是可以和ROW_NUMBER函式結合,透過ORDER BY NOTHING(NULL),用相同的值來替代排序,SQL查詢只多吃一點可以忽略的成本,來試試。
排序條件在DB的分頁處理中扮演重要的角色,邏輯上,排序能確保每一次的分頁查詢,分頁資料的順序都有一致的預期;在效能上,也因為她的名字是排序,她有決定性的影響。來比較叢集索引、非叢集索引及非索引欄位來作分頁排序時的差異。
Web程式要顯示大量資料時,為了追求效能,被逼上梁山的攻城獅會將資料作分頁(pagination)分次呈現,資料量少點的會透過Web程式進行分頁處理;多一點的,也許就會透過SQL,從DB端作分頁處理來降低資料量傳輸。