在做view的時候往往要把批量數(shù)據(jù)顯示給用戶看,那么這個時候我們就要對數(shù)據(jù)做分頁操作
總的來講分頁有兩種方式:
1:數(shù)據(jù)庫服務(wù)器端處理
就是說在數(shù)據(jù)庫上做查詢時就只返回需要的數(shù)據(jù)如:從數(shù)據(jù)庫表中的第M條記錄開始取N條記錄
sqlserver :
SELECT *
FROM ( SELECT Top N *
FROM (SELECT Top (M + N - 1) * FROM 表名稱 Order by 主鍵 desc) t1 ) t2
然后再對結(jié)果集進行處理
oracle:
2:在應用軟件端處理
先使用select * from table A where B order by C
然后對獲得的結(jié)果處理
兩種方法各有優(yōu)勢,如果在數(shù)據(jù)量不是很大的情況下,建議使用第二種,有利于sql的統(tǒng)一
在數(shù)據(jù)量大以及數(shù)據(jù)庫服務(wù)器隔離遠和網(wǎng)絡(luò)傳輸滿的情況下建議使用第一種減少傳輸量
總的來講分頁有兩種方式:
1:數(shù)據(jù)庫服務(wù)器端處理
就是說在數(shù)據(jù)庫上做查詢時就只返回需要的數(shù)據(jù)如:從數(shù)據(jù)庫表中的第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虛字段的性質(zhì)造成
by B) TABLE_L ) where row_num >= M and rownum < (M+N) 需要做3層嵌套是因為rownum虛字段的性質(zhì)造成
2:在應用軟件端處理
先使用select * from table A where B order by C
然后對獲得的結(jié)果處理
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
}
}
兩種方法各有優(yōu)勢,如果在數(shù)據(jù)量不是很大的情況下,建議使用第二種,有利于sql的統(tǒng)一
在數(shù)據(jù)量大以及數(shù)據(jù)庫服務(wù)器隔離遠和網(wǎng)絡(luò)傳輸滿的情況下建議使用第一種減少傳輸量