在做view的時候往往要把批量數據顯示給用戶看,那么這個時候我們就要對數據做分頁操作
總的來講分頁有兩種方式:
1:數據庫服務器端處理
就是說在數據庫上做查詢時就只返回需要的數據如:從數據庫表中的第M條記錄開始取N條記錄
sqlserver :
SELECT *
FROM ( SELECT Top N *
FROM (SELECT Top (M + N - 1) * FROM 表名稱 Order by 主鍵 desc) t1 ) t2
然后再對結果集進行處理
oracle:
2:在應用軟件端處理
先使用select * from table A where B order by C
然后對獲得的結果處理
兩種方法各有優勢,如果在數據量不是很大的情況下,建議使用第二種,有利于sql的統一
在數據量大以及數據庫服務器隔離遠和網絡傳輸滿的情況下建議使用第一種減少傳輸量
總的來講分頁有兩種方式:
1:數據庫服務器端處理
就是說在數據庫上做查詢時就只返回需要的數據如:從數據庫表中的第M條記錄開始取N條記錄
sqlserver :



oracle:
select * from ( select rownum row_num,TABL_L.* from ( select * from table where A order
by B) TABLE_L ) where row_num >= M and rownum < (M+N) 需要做3層嵌套是因為rownum虛字段的性質造成
by B) TABLE_L ) where row_num >= M and rownum < (M+N) 需要做3層嵌套是因為rownum虛字段的性質造成
2:在應用軟件端處理
先使用select * from table A where B order by C
然后對獲得的結果處理
while(rs.next()){
intRowCount = rs.getRow();
if(rs.getRow() >= startIndex && rs.getRow() <= endIndex){
//形成顯示html
}
}
intRowCount = rs.getRow();
if(rs.getRow() >= startIndex && rs.getRow() <= endIndex){
//形成顯示html
}
}
兩種方法各有優勢,如果在數據量不是很大的情況下,建議使用第二種,有利于sql的統一
在數據量大以及數據庫服務器隔離遠和網絡傳輸滿的情況下建議使用第一種減少傳輸量