當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 鷹潭OA > 鷹潭網(wǎng)站建設(shè)公司
有關(guān)MySQL分頁(yè)
申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114
鷹潭網(wǎng)站建設(shè)www.diyphp.netPERCONA PERFORMANCE CONFERENCE 2009上,來自雅虎的幾位工程師帶來了一篇”Efficient Pagination Using MySQL“的陳述,有許多亮點(diǎn),本文是在原文基礎(chǔ)上的進(jìn)一步延伸。
首要看一下分頁(yè)的基本原理:
mysql> explain SELECT * FROM message ORDER BY id DESC LIMIT 10000, 20G
***************** 1. row **************
id: 1
select_type: SIMPLE
table: message
type: index
possible_keys: NULL
key: PRIMARY
key_len: 4
ref: NULL
rows: 10020
Extra:
1 row in set (0.00 sec)
limit 10000,20的意思掃描滿意條件的10020行,丟掉前面的10000行,回來最終的20行,問題就在這里,若是是limit 100000,100,需求掃描100100行,在一個(gè)高并發(fā)的使用里,每次查詢需求掃描超越10W行,功能必定大打折扣。文中還提到limit n功能是沒問題的,由于只掃描n行。
文中提到一種”clue”的做法,給翻頁(yè)供給一些”頭緒”,比方仍是SELECT * FROM message ORDER BY id DESC,按id降序分頁(yè),每頁(yè)20條,當(dāng)時(shí)是第10頁(yè),當(dāng)時(shí)頁(yè)條目id最大的是9527,最小的是9500,若是咱們只供給”上一頁(yè)”、”下一頁(yè)”這樣的跳轉(zhuǎn)(不供給到第N頁(yè)的跳轉(zhuǎn)),那么在處置”上一頁(yè)”的時(shí)分SQL句子可所以:
SELECT * FROM message WHERE id > 9527 ORDER BY idASC LIMIT 20;
處置”下一頁(yè)”的時(shí)分SQL句子可所以:
SELECT * FROM message WHERE id < 9500 ORDER BY idDESC LIMIT 20;
不論翻多少頁(yè),每次查詢只掃描20行。
缺陷是只能供給”上一頁(yè)”、”下一頁(yè)”的鏈接辦法,可是咱們的產(chǎn)物司理十分喜歡”<上一頁(yè) 1 2 3 4 5 6 7 8 9 下一頁(yè)>”這樣的鏈接辦法,怎么辦呢?
若是LIMIT m,n不可避免的話,要優(yōu)化功率,只要盡可能的讓m小一下,咱們擴(kuò)大前面的”clue”做法,仍是SELECT * FROM message ORDER BY id DESC,按id降序分頁(yè),每頁(yè)20條,當(dāng)時(shí)是第10頁(yè),當(dāng)時(shí)頁(yè)條目id最大的是9527,最小的是9500,比方要跳到第8頁(yè),我看的SQL句子可以這樣寫:
SELECT * FROM message WHERE id > 9527 ORDER BY idASC LIMIT 20,20;
跳轉(zhuǎn)到第13頁(yè):
SELECT * FROM message WHERE id < 9500 ORDER BY idDESC LIMIT 40,20;
原理仍是一樣,記載住當(dāng)時(shí)頁(yè)id的最大值和最小值,核算跳轉(zhuǎn)頁(yè)面和當(dāng)時(shí)頁(yè)相對(duì)偏移,由于頁(yè)面附近,這個(gè)偏移量不會(huì)很大,這樣的話m值相對(duì)較小,大大削減掃描的行數(shù)。其實(shí)傳統(tǒng)的limit m,n,相對(duì)的偏移一直是第一頁(yè),這樣的話越翻到后邊,功率越差,而上面給出的辦法就沒有這樣的問題。
注重SQL句子里面的ASC和DESC,若是是ASC取出來的成果,顯現(xiàn)的時(shí)分記住倒置一下。
已在60W數(shù)據(jù)總量的表中測(cè)驗(yàn),作用十分顯著。
- 1Zend2.0的MVC完整過程。
- 2 企業(yè)四網(wǎng)合一網(wǎng)站升級(jí)版3
- 3網(wǎng)站建設(shè)之后,維護(hù)才是重中之重
- 4企業(yè)四網(wǎng)合一網(wǎng)站升級(jí)版1
- 5 數(shù)據(jù)庫(kù)操作基類
- 6網(wǎng)站建設(shè)之搜索功能強(qiáng)化升級(jí)標(biāo)準(zhǔn)
- 7玩具租賃商城系統(tǒng)需求6
- 8網(wǎng)站關(guān)鍵字的確定
- 9公司網(wǎng)站建成后應(yīng)該做些什么?
- 10專業(yè)級(jí)計(jì)算引入到普通PC的一款免費(fèi)操作系統(tǒng)
- 11優(yōu)質(zhì)的網(wǎng)站建設(shè)方案對(duì)網(wǎng)站制作的重要性
- 12玩具租賃商城系統(tǒng)需求1
- 13P2P網(wǎng)貸發(fā)展歷程
- 14ecshop的數(shù)據(jù)字典
- 15GAE上搭建PHP環(huán)境并開啟URL
- 16HTML5的呈現(xiàn)代表著新一波的Web順序辦法
- 17HTTPS(安全HTTP)和SSL/TLS(安全套接層/傳輸層安全)
- 18租賃網(wǎng)站功能介紹
- 19404過錯(cuò)跳轉(zhuǎn)到一個(gè)頁(yè)面,咱們?nèi)∶校簃issing404.php
- 20房地產(chǎn)行業(yè)微信營(yíng)銷方案3
- 21企業(yè)為什么偏愛需要資深的網(wǎng)站設(shè)計(jì)企業(yè)做官方網(wǎng)站呢?
- 22企業(yè)站針對(duì)用戶的優(yōu)化
- 23玩具租賃商城系統(tǒng)需求5
- 24企業(yè)做網(wǎng)站有沒有用?
- 25網(wǎng)站備案所需材料
- 26瀏覽器開發(fā)工具的秘密
- 27PHP性能優(yōu)化大全
- 28一篇HTML5分裂成兩標(biāo)準(zhǔn)
- 29PhoneGap新手總是需要一些基礎(chǔ)問題的解答
- 30評(píng)估企業(yè)站做的好壞的方法
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓