無意中從MSDN內看到一個 T-SQL 的 Function
ROW_NUMBER ( ) OVER ( [ ] )
這個Function主要是將查詢後的資料
將每一筆資料給予一個序列值
靈光閃過
使用這個Function可以寫出效能更棒的分頁效能
因為先前所寫過的分頁優化
最主要就是將每一筆資料使用自訂義的Function加上序列值
現在SQL SERVER 2005已經實現這個功能
寫起分頁優化變得更簡單
當然SQL SERVER 2005還是沒有MySql或者PostgreSQL來的方便
有時間的話再來測試一下
SQL SERVER 2005、MySql、PostgreSQL 之間的分頁上性能的差異
ok
開始看範例
範例中使用SQL SERVER 2005 的AdventureWorks資料庫
1. SELECT Serial,ProductID,Name FROM
2. (
3. SELECT ProductID,Name,ROW_NUMBER()OVER (ORDER BY ProductID DESC) AS Serial FROM Production.Product
4. ) AS Thread
5. WHERE (Thread.Serial > (@頁數編號 * @每頁顯示幾筆))
6. AND (Thread.Serial <= ((@頁數編號+1) * @每頁顯示幾筆))
值得說明一處
第一行中的ProductID,Name這些欄位需要對應到第3行
換句話說,如果第一行的欄位名稱出現qaz則第3行也需要加入qaz
原則是上寫成預存會更好
沒有留言:
張貼留言