中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

如何優(yōu)化Mysql千萬(wàn)級(jí)快速分頁(yè)
來(lái)源:易賢網(wǎng) 閱讀:2511 次 日期:2014-09-30 14:00:04
溫馨提示:易賢網(wǎng)小編為您整理了“如何優(yōu)化Mysql千萬(wàn)級(jí)快速分頁(yè)”,方便廣大網(wǎng)友查閱!

看例子:

數(shù) 據(jù)表 collect ( id, title ,info ,vtype) 就這4個(gè)字段,其中 title 用定長(zhǎng),info 用text, id 是逐漸,vtype是tinyint,vtype是索引。這是一個(gè)基本的新聞系統(tǒng)的簡(jiǎn)單模型。現(xiàn)在往里面填充數(shù)據(jù),填充10萬(wàn)篇新聞。

最后collect 為 10萬(wàn)條記錄,數(shù)據(jù)庫(kù)表占用硬盤(pán)1.6G。

OK ,看下面這條sql語(yǔ)句:

select id,title from collect limit 1000,10; 很快;基本上0.01秒就OK,再看下面的

select id,title from collect limit 90000,10; 從9萬(wàn)條開(kāi)始分頁(yè),結(jié)果?

8-9秒完成,my god 哪出問(wèn)題了????

其實(shí)要優(yōu)化這條數(shù)據(jù),網(wǎng)上找得到答案。看下面一條語(yǔ)句:

select id from collect order by id limit 90000,10; 很快,0.04秒就OK。 為什么?因?yàn)橛昧薸d主鍵做索引當(dāng)然快。網(wǎng)上的改法是:

select id,title from collect where id>=(select id from collect order by id limit 90000,1) limit 10;

這就是用了id做索引的結(jié)果。可是問(wèn)題復(fù)雜那么一點(diǎn)點(diǎn),就完了。看下面的語(yǔ)句

select id from collect where vtype=1 order by id limit 90000,10; 很慢,用了8-9秒!

到 了這里我相信很多人會(huì)和我一樣,有崩潰感覺(jué)!vtype 做了索引了啊?怎么會(huì)慢呢?vtype做了索引是不錯(cuò),你直接 select id from collect where vtype=1 limit 1000,10; 是很快的,基本上0.05秒,可是提高90倍,從9萬(wàn)開(kāi)始,那就是0.05*90=4.5秒的速度了。和測(cè)試結(jié)果8-9秒到了一個(gè)數(shù)量級(jí)。從這里開(kāi)始有人 提出了分表的思路,這個(gè)和dis #cuz 論壇是一樣的思路。思路如下:

建一個(gè)索引表: t (id,title,vtype) 并設(shè)置成定長(zhǎng),然后做分頁(yè),分頁(yè)出結(jié)果再到 collect 里面去找info 。 是否可行呢?實(shí)驗(yàn)下就知道了。

10萬(wàn)條記錄到 t(id,title,vtype) 里,數(shù)據(jù)表大小20M左右。用select id from t where vtype=1 order by id limit 90000,10; 很快了。基本上0.1-0.2秒可以跑完。為什么會(huì)這樣呢?我猜想是因?yàn)閏ollect 數(shù)據(jù)太多,所以分頁(yè)要跑很長(zhǎng)的路。limit 完全和數(shù)據(jù)表的大小有關(guān)的。其實(shí)這樣做還是全表掃描,只是因?yàn)閿?shù)據(jù)量小,只有10萬(wàn)才快。OK, 來(lái)個(gè)瘋狂的實(shí)驗(yàn),加到100萬(wàn)條,測(cè)試性能。

加了10倍的數(shù)據(jù),馬上t表就到了200多M,而且是定長(zhǎng)。還是剛才的查詢語(yǔ)句,時(shí)間是0.1-0.2秒完成!分表性能沒(méi)問(wèn)題?錯(cuò)!因?yàn)槲覀兊膌imit還是9萬(wàn),所以快。給個(gè)大的,90萬(wàn)開(kāi)始 select id from t where vtype=1 order by id limit 900000,10; 看看結(jié)果,時(shí)間是1-2秒!

why ?? 分表了時(shí)間還是這么長(zhǎng),非常之郁悶!有人說(shuō)定長(zhǎng)會(huì)提高limit的性能,開(kāi)始我也以為,因?yàn)橐粭l記錄的長(zhǎng)度是固定的,mysql 應(yīng)該可以算出90萬(wàn)的位置才對(duì)啊? 可是我們高估了mysql 的智能,他不是商務(wù)數(shù)據(jù)庫(kù),事實(shí)證明定長(zhǎng)和非定長(zhǎng)對(duì)limit影響不大? 怪不得有人說(shuō) discuz到了100萬(wàn)條記錄就會(huì)很慢,我相信這是真的,這個(gè)和數(shù)據(jù)庫(kù)設(shè)計(jì)有關(guān)!

難道MySQL 無(wú)法突破100萬(wàn)的限制嗎???到了100萬(wàn)的分頁(yè)就真的到了極限???

答案是: NO !!!! 為什么突破不了100萬(wàn)是因?yàn)椴粫?huì)設(shè)計(jì)mysql造成的。下面介紹非分表法,來(lái)個(gè)瘋狂的測(cè)試!一張表搞定100萬(wàn)記錄,并且10G 數(shù)據(jù)庫(kù),如何快速分頁(yè)!

好了,我們的測(cè)試又回到 collect表,開(kāi)始測(cè)試結(jié)論是: 30萬(wàn)數(shù)據(jù),用分表法可行,超過(guò)30萬(wàn)他的速度會(huì)慢道你無(wú)法忍受!當(dāng)然如果用分表+我這種方法,那是絕對(duì)完美的。但是用了我這種方法后,不用分表也可以完美解決!

答 案就是:復(fù)合索引! 有一次設(shè)計(jì)mysql索引的時(shí)候,無(wú)意中發(fā)現(xiàn)索引名字可以任取,可以選擇幾個(gè)字段進(jìn)來(lái),這有什么用呢?開(kāi)始的select id from collect order by id limit 90000,10; 這么快就是因?yàn)樽吡怂饕墒侨绻恿藈here 就不走索引了。抱著試試看的想法加了 search(vtype,id) 這樣的索引。然后測(cè)試

select id from collect where vtype=1 limit 90000,10; 非常快!0.04秒完成!

再測(cè)試: select id ,title from collect where vtype=1 limit 90000,10; 非常遺憾,8-9秒,沒(méi)走search索引!

再測(cè)試:search(id,vtype),還是select id 這個(gè)語(yǔ)句,也非常遺憾,0.5秒。

綜上:如果對(duì)于有where 條件,又想走索引用limit的,必須設(shè)計(jì)一個(gè)索引,將where 放第一位,limit用到的主鍵放第2位,而且只能select 主鍵!

完美解決了分頁(yè)問(wèn)題了。可以快速返回id就有希望優(yōu)化limit , 按這樣的邏輯,百萬(wàn)級(jí)的limit 應(yīng)該在0.0x秒就可以分完。看來(lái)mysql 語(yǔ)句的優(yōu)化和索引時(shí)非常重要的!

好了,回到原題,如何將上面的研究成功快速應(yīng)用于開(kāi)發(fā)呢?如果用復(fù)合查詢,我的輕量級(jí)框架就沒(méi)的用了。分頁(yè)字符串還得自己寫(xiě),那多麻煩?這里再看一個(gè)例子,思路就出來(lái)了:

select * from collect where id in (9000,12,50,7000); 竟然 0秒就可以查完!

mygod ,mysql 的索引竟然對(duì)于in語(yǔ)句同樣有效!看來(lái)網(wǎng)上說(shuō)in無(wú)法用索引是錯(cuò)誤的!

小小的索引+一點(diǎn)點(diǎn)的改動(dòng)就使mysql 可以支持百萬(wàn)甚至千萬(wàn)級(jí)的高效分頁(yè)!

通過(guò)這里的例子,我反思了一點(diǎn):對(duì)于大型系統(tǒng),千萬(wàn)不能用框架,尤其是那種連sql語(yǔ)句都看不到的框架!因?yàn)殚_(kāi)始對(duì)于我的輕量級(jí)框架都差點(diǎn)崩潰!只適 合小型應(yīng)用的快速開(kāi)發(fā),對(duì)于ERP,OA,大型網(wǎng)站,數(shù)據(jù)層包括邏輯層的東西都不能用框架。如果程序員失去了對(duì)sql語(yǔ)句的把控,那項(xiàng)目的風(fēng)險(xiǎn)將會(huì)成幾何 級(jí)數(shù)增加!尤其是用mysql 的時(shí)候,mysql 一定需要專(zhuān)業(yè)的dba 才可以發(fā)揮他的最佳性能。一個(gè)索引所造成的性能差別可能是上千倍!

PS: 經(jīng)過(guò)實(shí)際測(cè)試,到了100萬(wàn)的數(shù)據(jù),160萬(wàn)數(shù)據(jù),15G表,190M索引,就算走索引,limit都得0.49秒。所以分頁(yè)最好別讓別人

更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
易賢網(wǎng)手機(jī)網(wǎng)站地址:如何優(yōu)化Mysql千萬(wàn)級(jí)快速分頁(yè)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢?yōu)闇?zhǔn)!

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類(lèi)型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
久久久精品免费视频| 国产精品久久久久久久久久久久久久 | 欧美精品性视频| 欧美一区影院| 欧美在线视频免费观看| 销魂美女一区二区三区视频在线| 亚洲一级片在线观看| 亚洲欧美视频在线| 午夜视频一区二区| 久久噜噜亚洲综合| 久久综合久久综合九色| 欧美成人蜜桃| 欧美日韩亚洲激情| 国产精品制服诱惑| 1000部国产精品成人观看 | 在线亚洲激情| 亚洲欧美日韩在线不卡| 久久精品国产欧美亚洲人人爽| 久久久亚洲高清| 久久精品国产亚洲一区二区| 欧美1区2区视频| 国产精品成人国产乱一区| 欧美欧美在线| 国产精品嫩草久久久久| 黄色亚洲免费| 一本在线高清不卡dvd| 欧美一级欧美一级在线播放| 美国成人直播| 国产精品区一区| 在线观看久久av| 亚洲一区二区三区免费观看| 久久精品人人做人人爽电影蜜月 | 午夜一区在线| 麻豆乱码国产一区二区三区| 欧美日韩国产123| 国产日韩欧美在线播放不卡| 亚洲精品日韩激情在线电影| 午夜欧美大片免费观看| 欧美大香线蕉线伊人久久国产精品| 欧美日韩一区二区三| 亚洲国产精品成人| 久久琪琪电影院| 国产一区二区久久| 久久成人国产| 国产亚洲激情在线| 欧美亚洲一区二区在线观看| 国产精品乱码妇女bbbb| 亚洲天堂av在线免费| 欧美日韩精品系列| 一本色道久久综合亚洲精品婷婷 | 亚洲天堂av综合网| 欧美精品成人| 亚洲人体影院| 欧美老女人xx| 一区二区三区视频观看| 国产精品啊啊啊| 亚洲欧美一区二区三区在线| 国产精品视频1区| 欧美一区二区三区在线| 国产午夜精品理论片a级大结局| 一区二区三区成人精品| 欧美日韩国产高清| 一区二区三区.www| 欧美色另类天堂2015| 亚洲一区二区三区精品动漫| 国产精品入口福利| 久久岛国电影| 亚洲第一偷拍| 欧美日韩成人在线| 午夜精品免费| 1024亚洲| 欧美日韩国产欧美日美国产精品| 亚洲视频在线看| 国产亚洲一区在线| 国产九区一区在线| 一区二区三区四区蜜桃| 国产精品亚洲美女av网站| 午夜精品网站| 久久婷婷av| 国内精品免费午夜毛片| 久久亚洲二区| 国产日韩成人精品| 久久影音先锋| 99亚洲一区二区| 国产精品国产自产拍高清av| 欧美亚洲尤物久久| 激情校园亚洲| 欧美久久九九| 欧美在线播放高清精品| 精品福利免费观看| 欧美区亚洲区| 久久国产精品久久久久久电车 | 91久久在线视频| 国产精品不卡在线| 久久精品国产77777蜜臀| 亚洲国产成人精品女人久久久| 欧美日韩免费在线视频| 久久精品99国产精品酒店日本| 亚洲国产精品嫩草影院| 国产精品日韩二区| 欧美成年人视频| 小黄鸭视频精品导航| 亚洲电影第1页| 国产免费成人av| 欧美片在线播放| 久久免费高清| 亚洲一区二区久久| 日韩午夜激情电影| 亚洲视频一区在线| 一本在线高清不卡dvd| 久久久国产精品一区| 欧美手机在线| 午夜精品电影| 欧美一区二区视频在线观看| 亚洲欧美日本在线| 亚洲欧美综合网| 久久精品成人一区二区三区蜜臀| 久久成人av少妇免费| 久久精品视频导航| 国产精品永久免费| 麻豆精品精华液| 久久精品国产一区二区三区免费看| 亚洲精品综合| 99国产精品视频免费观看一公开| 亚洲欧美资源在线| 韩国精品主播一区二区在线观看| 久久精品中文| 国产一区二区精品久久| 亚洲性线免费观看视频成熟| 欧美日韩国产影片| 亚洲精品国偷自产在线99热| 久久亚洲高清| 黄色国产精品一区二区三区| 亚洲欧美制服中文字幕| 国产亚洲美州欧州综合国| 欧美成人有码| 一区二区激情| 亚洲国产精品第一区二区| 欧美激情第六页| 午夜宅男久久久| 合欧美一区二区三区| 国产在线精品一区二区中文 | 欧美性一二三区| 国产丝袜美腿一区二区三区| 黄色另类av| 亚洲一区欧美激情| 欧美福利小视频| 国产欧美一级| 亚洲视频网站在线观看| 久久精品视频免费播放| 欧美日韩一级黄| 亚洲人成免费| 久久久久免费| 国产亚洲欧美一区在线观看| 一区二区三区欧美成人| 裸体素人女欧美日韩| 国产免费一区二区三区香蕉精| 亚洲自拍偷拍色片视频| 亚洲一区激情| 亚洲欧美日韩在线播放| 99视频精品| 欧美视频在线观看一区| 欧美日韩中文字幕在线视频| 欧美成年网站| 久久精品首页| 亚洲国产精品悠悠久久琪琪 | 在线观看国产成人av片| 国产视频在线观看一区二区三区| 国产精品亚洲а∨天堂免在线| 狠狠久久五月精品中文字幕| 国产乱人伦精品一区二区 | 欧美久久婷婷综合色| 男同欧美伦乱| 狠狠狠色丁香婷婷综合久久五月| 亚洲女人天堂av| 国产日本亚洲高清| 国产中文一区| 国产精品男gay被猛男狂揉视频| 久久超碰97中文字幕| 亚洲欧洲一区二区三区在线观看| 亚洲美女毛片| 亚洲在线国产日韩欧美| 亚洲精品欧美日韩专区| 91久久在线播放| 在线国产亚洲欧美| 99国产精品一区| 亚洲欧美文学| 欧美极品影院| 国内精品久久久| 一区二区在线不卡| 久久精品国产99| 欧美体内she精视频在线观看| 国产欧美日韩精品在线| 亚洲综合色视频| 影音先锋在线一区| 欧美日本韩国在线| 久久福利精品| a4yy欧美一区二区三区| 国产伦精品一区二区三| 欧美r片在线|