亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

分頁技術原理與實現之分頁的意義及方法(一)

2024-07-24 13:09:44
字體:
來源:轉載
供稿:網友

什么是分頁技術
 分頁,是一種將所有數據分段展示給用戶的技術.用戶每次看到的不是全部數據,而是其中的一部分,如果在其中沒有找到自習自己想要的內容,用戶可以通過制定頁碼或是翻頁的方式轉換可見內容,直到找到自己想要的內容為止.其實這和我們閱讀書籍很類似.
  下頁顯示了兩種常見的分頁方式:

分頁,分頁原理,分頁方法

分頁的意義
 分頁確實有效,但它一定會加大系統的復雜度,但可否不分頁呢?如果數據量少的話當然可以.但是對于企業信息系統來說數據量不會限制在一個小范圍內.如果不顧一切的Select * from某個表,再將返回的數據一古腦的扔給客戶,即使客戶能夠忍受成千上萬足夠讓人眼花繚亂的表格式數據,繁忙的網絡,緊張的服務器也會提出它們無聲的抗議,甚至有時會以徹底的罷工作為終結.這個結局有點像古代為所欲為的暴君和他忍無可忍的臣民之間的故事.
  程序員不是暴君,他希望程序使生活變得更好而不是更糟.考慮到企業信息系統多是三層甚至更多層架構的事實,程序員在向客戶展示數據時都應該采取分頁的形式.如果他不想被抱怨淹沒或是半夜被電話驚醒的話。

從請求發起到返回數據的整個過程
 現在你已經下定決心想要分頁了,在動手書寫代碼之前,先讓我們回想一下,在典型的三層架構中,從請求發起到返回數據的整個過程.如下所示:

分頁,分頁原理,分頁方法

在哪里進行分頁
 從上面的圖中我們可以觀察得知,在SQL語句處理完畢后,數據庫,WebApplication和Browser都能進行分頁,那在哪里分頁好呢?
  判斷的標準是速度,顯而易見,數據庫服務器,Web應用服務器和客戶端之間是網絡,如果網絡傳遞的數據量越少,則客戶端獲得響應的速度越快.而且一般來說,數據庫服務器和Web應用服務器的處理能力一般比客戶端要強很多.從這兩點來看,在客戶端分頁的方案是最不可取的.
  其次就剩下了在Web服務器端分頁和在數據庫端分頁兩種方式了,如果選擇在Web服務器端分頁的話,大部分的被過濾掉的數據還是被傳輸到了Web應用服務器端,與其這樣還不如直接在數據庫端進行分頁.
 因此比較好的分頁做法應該是每次翻頁的時候只從數據庫里檢索頁面大小的塊區的數據。這樣雖然每次翻頁都需要查詢數據庫,但查詢出的記錄數很少,網絡傳輸數據量不大,如果使用連接池更可以略過最耗時的建立數據庫連接過程。而在數據庫端有各種成熟的優化技術用于提高查詢速度,比在應用服務器層做緩存有效多了。 

分頁的SQL語句
 如果我們是通過JDBC的方式訪問數據庫,那么就有必要根據數據庫類型采取不同的SQL分頁語句,對于MySQL數據庫,我們可以采用limit語句進行分頁,對于Oracle數據庫,我們可以采用rownum的方式進行分頁.
 (1)MySql的Limit m,n語句
 Limit后的兩個參數中,參數m是起始下標,它從0開始;參數n是返回的記錄數。我們需要分頁的話指定這兩個值即可
 (2)Oracle數據庫的rownum
 在Oracle數據庫中,分頁方式沒有MySql這樣簡單,它需要依靠rownum來實現.
Rownum表示一條記錄的行號,值得注意的是它在獲取每一行后才賦予.因此,想指定rownum的區間來取得分頁數據在一層查詢語句中是無法做到的,要分頁還要進行一次查詢.

 SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40)WHERE RN >= 21

 其中最內層的查詢SELECT * FROM TABLE_NAME表示不進行翻頁的原始查詢語句。ROWNUM <= 40和RN >= 21控制分頁查詢的每頁的范圍。
 上面給出的這個分頁查詢語句,在大多數情況擁有較高的效率。分頁的目的就是控制輸出結果集大小,將結果盡快的返回。在上面的分頁查詢語句中,這種考慮主要體現在WHERE ROWNUM <= 40這句上。
 選擇第21到40條記錄存在兩種方法,一種是上面例子中展示的在查詢的第二層通過ROWNUM <= 40來控制最大值,在查詢的最外層控制最小值。而另一種方式是去掉查詢第二層的WHERE ROWNUM <= 40語句,在查詢的最外層控制分頁的最小值和最大值。這是,查詢語句如下:

 SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A )WHERE RN BETWEEN 21 AND 40

 對比這兩種寫法,絕大多數的情況下,第一個查詢的效率比第二個高得多。
 這是由于CBO優化模式下,Oracle可以將外層的查詢條件推到內層查詢中,以提高內層查詢的執行效率。對于第一個查詢語句,第二層的查詢條件WHERE ROWNUM <= 40就可以被Oracle推入到內層查詢中,這樣Oracle查詢的結果一旦超過了ROWNUM限制條件,就終止查詢將結果返回了。
 而第二個查詢語句,由于查詢條件BETWEEN 21 AND 40是存在于查詢的第三層,而Oracle無法將第三層的查詢條件推到最內層(即使推到最內層也沒有意義,因為最內層查詢不知道RN代表什么)。因此,對于第二個查詢語句,Oracle最內層返回給中間層的是所有滿足條件的數據,而中間層返回給最外層的也是所有數據。數據的過濾在最外層完成,顯然這個效率要比第一個查詢低得多。
 上面分析的查詢不僅僅是針對單表的簡單查詢,對于最內層查詢是復雜的多表聯合查詢或最內層查詢包含排序的情況一樣有效。

 其實分頁技術還有很多其它技術,比如:Struts、hibernate等等都可實現。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成人精品在线| 亚洲三级黄色在线观看| 国产精品视频资源| zzjj国产精品一区二区| 久久久久久久激情视频| 色av吧综合网| 91久热免费在线视频| 日韩欧美国产一区二区| 中文字幕精品一区久久久久| www欧美日韩| 美女精品久久久| 欧美xxxx做受欧美| 成人妇女淫片aaaa视频| 欧美性猛交xxxx乱大交| 精品调教chinesegay| 亚洲精品短视频| 亚洲风情亚aⅴ在线发布| 中文字幕日韩欧美精品在线观看| 全色精品综合影院| 九九视频这里只有精品| 69av视频在线播放| 伊人青青综合网站| 91精品国产综合久久久久久蜜臀| 日韩中文字幕在线免费观看| 日韩激情视频在线播放| 欧美小视频在线观看| 在线播放精品一区二区三区| 日韩在线视频一区| 91精品国产亚洲| 国产日韩精品在线播放| 久久精视频免费在线久久完整在线看| 亚洲已满18点击进入在线看片| 国产精品18久久久久久首页狼| 青草青草久热精品视频在线观看| 亚洲国产欧美在线成人app| 日本精品中文字幕| 国产午夜精品美女视频明星a级| 久久91精品国产91久久跳| 日本免费久久高清视频| 亚洲精品国精品久久99热一| 欧美精品成人91久久久久久久| 久久久亚洲国产| 亚洲男人天堂2019| 国产精品爽黄69天堂a| 久久精品一区中文字幕| 欧美一级片一区| 日韩精品视频中文在线观看| 国产精品极品美女粉嫩高清在线| 精品呦交小u女在线| 成人黄色免费片| xxxxxxxxx欧美| 97视频在线观看视频免费视频| 日韩高清中文字幕| 亚洲图片欧美日产| 久久精品亚洲国产| 欧美大片在线看免费观看| 欧美成人sm免费视频| 久久久精品影院| 疯狂做受xxxx高潮欧美日本| 亚洲色图35p| 欧美日韩激情视频8区| 成人黄色大片在线免费观看| 亚洲精品久久久久久下一站| 国产精品ⅴa在线观看h| 国产精品成熟老女人| 久久久久久97| 国产一区二区丝袜高跟鞋图片| 国产精品都在这里| 国产亚洲成精品久久| 成人综合国产精品| 国产精品高潮视频| 日韩美女激情视频| 中文字幕一区日韩电影| 成人激情视频在线观看| 一本色道久久综合狠狠躁篇怎么玩| 亚洲在线免费观看| 久久夜色精品国产欧美乱| 成人免费淫片aa视频免费| 亚洲一区二区在线播放| 日韩av快播网址| 成人黄色片在线| 日韩精品视频免费专区在线播放| 亚洲国产婷婷香蕉久久久久久| 欧美视频在线免费看| 青青草99啪国产免费| 日韩国产在线播放| 亚洲a级在线观看| 欧美国产日韩一区二区三区| 国产精品欧美在线| 国产精品久久久999| 综合欧美国产视频二区| 97av在线视频| 欧美人在线视频| 欧美综合在线第二页| 国产精品久久久久免费a∨| 久国内精品在线| 日韩黄色av网站| 亚洲第一福利在线观看| 青草热久免费精品视频| 色综合天天狠天天透天天伊人| 亚洲毛茸茸少妇高潮呻吟| 色噜噜国产精品视频一区二区| 国产精品精品一区二区三区午夜版| 久久韩国免费视频| 最近2019中文字幕在线高清| 91精品在线影院| 欧美成人在线免费| 国产69精品久久久| 国产成人短视频| 国产精品免费视频久久久| 久久免费观看视频| 久久久久九九九九| 91香蕉嫩草影院入口| 88国产精品欧美一区二区三区| 深夜福利国产精品| 最新国产精品亚洲| 91精品国产综合久久男男| 国产精品美女免费视频| 久久久久这里只有精品| 欧美国产视频日韩| 中文字幕免费国产精品| 国产精品久久久久免费a∨| 97色在线播放视频| 欧美小视频在线| 不卡中文字幕av| 综合欧美国产视频二区| 欧美精品久久一区二区| 亚洲高清免费观看高清完整版| 欧美高清激情视频| 亚洲人午夜精品免费| 久久久久久久国产精品| 欧美日韩国产综合新一区| 亚洲人成网站777色婷婷| 成人免费福利视频| 久99久在线视频| 日韩女优人人人人射在线视频| 国产午夜精品免费一区二区三区| 精品久久久久久电影| 久久视频这里只有精品| 国产成人精品亚洲精品| 欧美激情区在线播放| 国产成人+综合亚洲+天堂| 亚洲精品视频在线观看视频| 欧美综合激情网| 亚洲精品自拍偷拍| 欧美日韩日本国产| 国产精品中文字幕久久久| 亚洲综合中文字幕68页| 欧美小视频在线| 亚洲人成电影在线播放| 热99精品只有里视频精品| 亚洲国产精品va| 黄色91在线观看| 国产欧美日韩免费看aⅴ视频| 成人欧美在线视频| 亚洲精品影视在线观看| 久久视频免费在线播放| 日韩中文字幕视频在线观看| 欧美日韩999| www.久久久久| 国产成人av在线| 精品一区二区三区三区| 成人网在线观看| 欧美激情三级免费|