分頁問題是乙個非常普遍的問題,開發者幾乎都會遇到,這裡不討論具體如何分頁,說明一下web方式下分頁的原理。首先是查詢獲得乙個結果集(表現為查詢資料庫獲得的結果),如果結果比較多我們一般都不會一下顯示所有的資料,那麼就會用分頁的方式來顯示某些資料(比如20條)。因為http的無狀態性,每一次提交都是當作乙個新的請求來處理,即使是換頁,上一次的結果對下一次是沒有影響的。
這裡總結三種實現分頁的方式,不知道還有沒有別的!
1.每次取查詢結果的所有資料,然後根據頁碼顯示指定的紀錄。
2.根據頁面只取一頁資料,然後顯示這一頁,這裡要構造sql語句。
3.取一定頁數的資料,就是前面兩種的折中。
這裡還要注意的是這些資料是放在request還是session中,這裡一一討論
1.一般不會放在session中,因為會占用大量記憶體,所以要放在request裡面。
優點:實現比較簡單,查詢速度比較快。
缺點:占用記憶體多一些,網路傳輸資料多。
對於資料量比較少的查詢這種方法比較合適。這裡有人把資料放在session中,這樣換頁的時候就不用重新查詢,但是這樣是極其不好的,強烈建議不要這樣使用。
2.肯定不會放在session中,因為放在session中沒有意義。
優點:占用記憶體少。
缺點:比較麻煩,必須先獲得查詢結果的總數,因為要知道有多少紀錄才知道有多少頁。另外要構造分頁查詢語句,對於不同的資料庫是不一樣的。
3.這種情況是肯定放在session中了,要不然我幹嗎取好幾頁呀,這樣的實現是為了減少資料庫查詢的次數,比如我儲存第1到10的紀錄,那麼換頁的時候如果在1到10之間就可以直接從session獲取。如果換到11頁,我可以重新設定快取11到
20頁的資料(或者5到15頁的資料),這樣的話換10次才需要一次資料庫查詢操作。
優點:占用記憶體相對不多,提高平均查詢速度。
缺點:實現起來更加複雜,可能存在髒資料,需要自己定義乙個快取集合。如果查詢的資料量比較大,可以考慮採用這樣方式。
三種分頁方式
1.分頁方案一 利用not in和select top分頁 語句形式 selecttop10 fromtesttablewhere idnotin selecttop20id fromtesttable orderbyid orderbyidselecttop頁大小 fromtesttablewhe...
Web分頁顯示的三種實現方式
一次性查詢記錄並載入到html的table中。然後通過選擇性地顯示某些行來達到分頁顯示的目的。這是一種偽分頁,障眼法而已。只能用於資料少的情況下。一旦資料多了,十幾萬條資料載入到html中會變得很慢。而且不實時,一次載入完後資料就寫死在頁面了,若資料庫中有變化,瀏覽器端顯示的仍是上次載入過來的資料。...
sql三種分頁方式
表中主鍵必須為標識列,id int identity 1,1 1.分頁方案一 利用not in和select top分頁 語句形式 select top 10 from testtable where id not in select top 20 id from testtable order b...