當(dāng)前位置:工程項目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 鷹潭OA > 鷹潭網(wǎng)站建設(shè)公司
有關(guān)MySQL分頁
PERCONA PERFORMANCE CONFERENCE 2009上,來自雅虎的幾位工程師帶來了一篇”Efficient Pagination Using MySQL“的陳述,有許多亮點(diǎn),本文是在原文基礎(chǔ)上的進(jìn)一步延伸。
首要看一下分頁的基本原理:
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行,在一個高并發(fā)的使用里,每次查詢需求掃描超越10W行,功能必定大打折扣。文中還提到limit n功能是沒問題的,由于只掃描n行。
文中提到一種”clue”的做法,給翻頁供給一些”頭緒”,比方仍是SELECT * FROM message ORDER BY id DESC,按id降序分頁,每頁20條,當(dāng)時是第10頁,當(dāng)時頁條目id最大的是9527,最小的是9500,若是咱們只供給”上一頁”、”下一頁”這樣的跳轉(zhuǎn)(不供給到第N頁的跳轉(zhuǎn)),那么在處置”上一頁”的時分SQL句子可所以:
SELECT * FROM message WHERE id > 9527 ORDER BY idASC LIMIT 20;
處置”下一頁”的時分SQL句子可所以:
SELECT * FROM message WHERE id < 9500 ORDER BY idDESC LIMIT 20;
不論翻多少頁,每次查詢只掃描20行。
缺陷是只能供給”上一頁”、”下一頁”的鏈接辦法,可是咱們的產(chǎn)物司理十分喜歡”<上一頁 1 2 3 4 5 6 7 8 9 下一頁>”這樣的鏈接辦法,怎么辦呢?
若是LIMIT m,n不可避免的話,要優(yōu)化功率,只要盡可能的讓m小一下,咱們擴(kuò)大前面的”clue”做法,仍是SELECT * FROM message ORDER BY id DESC,按id降序分頁,每頁20條,當(dāng)時是第10頁,當(dāng)時頁條目id最大的是9527,最小的是9500,比方要跳到第8頁,我看的SQL句子可以這樣寫:
SELECT * FROM message WHERE id > 9527 ORDER BY idASC LIMIT 20,20;
跳轉(zhuǎn)到第13頁:
SELECT * FROM message WHERE id < 9500 ORDER BY idDESC LIMIT 40,20;
原理仍是一樣,記載住當(dāng)時頁id的最大值和最小值,核算跳轉(zhuǎn)頁面和當(dāng)時頁相對偏移,由于頁面附近,這個偏移量不會很大,這樣的話m值相對較小,大大削減掃描的行數(shù)。其實(shí)傳統(tǒng)的limit m,n,相對的偏移一直是第一頁,這樣的話越翻到后邊,功率越差,而上面給出的辦法就沒有這樣的問題。
注重SQL句子里面的ASC和DESC,若是是ASC取出來的成果,顯現(xiàn)的時分記住倒置一下。
已在60W數(shù)據(jù)總量的表中測驗(yàn),作用十分顯著。
- 1Zend2.0的MVC完整過程。
- 2 企業(yè)四網(wǎng)合一網(wǎng)站升級版3
- 3網(wǎng)站建設(shè)之后,維護(hù)才是重中之重
- 4企業(yè)四網(wǎng)合一網(wǎng)站升級版1
- 5 數(shù)據(jù)庫操作基類
- 6網(wǎng)站建設(shè)之搜索功能強(qiáng)化升級標(biāo)準(zhǔn)
- 7玩具租賃商城系統(tǒng)需求6
- 8網(wǎng)站關(guān)鍵字的確定
- 9公司網(wǎng)站建成后應(yīng)該做些什么?
- 10專業(yè)級計算引入到普通PC的一款免費(fèi)操作系統(tǒng)
- 11優(yōu)質(zhì)的網(wǎng)站建設(shè)方案對網(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過錯跳轉(zhuǎn)到一個頁面,咱們?nèi)∶校簃issing404.php
- 20房地產(chǎn)行業(yè)微信營銷方案3
- 21企業(yè)為什么偏愛需要資深的網(wǎng)站設(shè)計企業(yè)做官方網(wǎng)站呢?
- 22企業(yè)站針對用戶的優(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評估企業(yè)站做的好壞的方法
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓