SQL分页查询的介绍以及好处~~
SQL分頁(yè)查詢的介紹以及好處~~
分頁(yè)查詢
?
就是將過(guò)多的結(jié)果在有限的界面上分多頁(yè)來(lái)顯示,一般將分頁(yè)查詢分為兩類:
邏輯分頁(yè)、物理分頁(yè)。
邏輯分頁(yè)是在用戶第一次訪問(wèn)時(shí),將數(shù)據(jù)庫(kù)的所有記錄全部查詢出來(lái),添加到一個(gè)大集合中,然后存放在session對(duì)象,再通過(guò)頁(yè)碼計(jì)算出當(dāng)前頁(yè)需要顯示的數(shù)據(jù)內(nèi)容,存儲(chǔ)到一個(gè)小的list的集合中,并將其存儲(chǔ)到request對(duì)象中,跳轉(zhuǎn)到JSP頁(yè)面,進(jìn)行遍歷顯示。 當(dāng)用戶第二次訪問(wèn)時(shí),只要不關(guān)閉瀏覽器,還會(huì)從session中獲取數(shù)據(jù),來(lái)進(jìn)行顯示。因?yàn)榇朔N方法是在內(nèi)存的session對(duì)象中進(jìn)行計(jì)算分頁(yè)顯示的,而不是真正的將我們數(shù)據(jù)庫(kù)進(jìn)行分頁(yè)的,所以叫做邏輯分頁(yè)。
缺點(diǎn):如果需要查詢的數(shù)據(jù)量過(guò)大,session將耗費(fèi)大量的內(nèi)存;因?yàn)槭窃趕ession中獲取數(shù)據(jù),如果第二次或者更多此的不關(guān)閉瀏覽器訪問(wèn),會(huì)直接訪問(wèn)session,從而不能保證數(shù)據(jù)是最新的。
優(yōu)點(diǎn):統(tǒng)一代碼處理方式,較容易跨數(shù)據(jù)庫(kù)做遷移。
物理分頁(yè),使用數(shù)據(jù)庫(kù)自身所帶的分頁(yè)機(jī)制,例如,Oracle數(shù)據(jù)庫(kù)的rownum,或者M(jìn)ysql數(shù)據(jù)庫(kù)中的limit等機(jī)制來(lái)完成分頁(yè)操作。因?yàn)槭菍?duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行分頁(yè)條件查詢,所以叫物理分頁(yè)。每一次物理分頁(yè)都會(huì)去連接數(shù)據(jù)庫(kù)。
優(yōu)點(diǎn):數(shù)據(jù)能夠保證最新,由于根據(jù)分頁(yè)條件會(huì)查詢出少量的數(shù)據(jù),所以不會(huì)占用太多的內(nèi)存。
?
CTE(Common Table Expression,公用表表達(dá)式)
?
該表達(dá)式源自簡(jiǎn)單查詢,可以認(rèn)為是在單個(gè) SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 語(yǔ)句的執(zhí)行范圍內(nèi)定義的臨時(shí)結(jié)果集。CTE 與派生表類似,具體表現(xiàn)在不存儲(chǔ)為對(duì)象,并且只在查詢期間有效。與派生表的不同之處在于,CTE 可自引用,還可在同一查詢中引用多次。
分頁(yè)查詢的好處:
參考博文:點(diǎn)擊打開(kāi)鏈接https://www.2cto.com/database/201511/451632.html
總結(jié)
以上是生活随笔為你收集整理的SQL分页查询的介绍以及好处~~的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 最小生成树算法(两个方法实现)
- 下一篇: linux mysql 5.6.23_m