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

如何優(yōu)化Mysql千萬級快速分頁
來源:易賢網(wǎng) 閱讀:1111 次 日期:2014-10-14 09:54:57
溫馨提示:易賢網(wǎng)小編為您整理了“如何優(yōu)化Mysql千萬級快速分頁”,方便廣大網(wǎng)友查閱!

看例子:

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

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

OK ,看下面這條sql語句:

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

select id,title from collect limit 90000,10; 從9萬條開始分頁,結果?

8-9秒完成,my god 哪出問題了????

其實要優(yōu)化這條數(shù)據(jù),網(wǎng)上找得到答案??聪旅嬉粭l語句:

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

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

這就是用了id做索引的結果??墒菃栴}復雜那么一點點,就完了??聪旅娴恼Z句

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

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

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

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

加了10倍的數(shù)據(jù),馬上t表就到了200多M,而且是定長。還是剛才的查詢語句,時間是0.1-0.2秒完成!分表性能沒問題?錯!因為我們的limit還是9萬,所以快。給個大的,90萬開始 select id from t where vtype=1 order by id limit 900000,10; 看看結果,時間是1-2秒!

why ?? 分表了時間還是這么長,非常之郁悶!有人說定長會提高limit的性能,開始我也以為,因為一條記錄的長度是固定的,mysql 應該可以算出90萬的位置才對?。?可是我們高估了mysql 的智能,他不是商務數(shù)據(jù)庫,事實證明定長和非定長對limit影響不大? 怪不得有人說 discuz到了100萬條記錄就會很慢,我相信這是真的,這個和數(shù)據(jù)庫設計有關!

難道MySQL 無法突破100萬的限制嗎???到了100萬的分頁就真的到了極限???

答案是: NO !!!! 為什么突破不了100萬是因為不會設計mysql造成的。下面介紹非分表法,來個瘋狂的測試!一張表搞定100萬記錄,并且10G 數(shù)據(jù)庫,如何快速分頁!

好了,我們的測試又回到 collect表,開始測試結論是: 30萬數(shù)據(jù),用分表法可行,超過30萬他的速度會慢道你無法忍受!當然如果用分表+我這種方法,那是絕對完美的。但是用了我這種方法后,不用分表也可以完美解決!

答 案就是:復合索引! 有一次設計mysql索引的時候,無意中發(fā)現(xiàn)索引名字可以任取,可以選擇幾個字段進來,這有什么用呢?開始的select id from collect order by id limit 90000,10; 這么快就是因為走了索引,可是如果加了where 就不走索引了。抱著試試看的想法加了 search(vtype,id) 這樣的索引。然后測試

select id from collect where vtype=1 limit 90000,10; 非??欤?.04秒完成!

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

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

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

完美解決了分頁問題了??梢钥焖俜祷豬d就有希望優(yōu)化limit , 按這樣的邏輯,百萬級的limit 應該在0.0x秒就可以分完??磥韒ysql 語句的優(yōu)化和索引時非常重要的!

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

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

mygod ,mysql 的索引竟然對于in語句同樣有效!看來網(wǎng)上說in無法用索引是錯誤的!

小小的索引+一點點的改動就使mysql 可以支持百萬甚至千萬級的高效分頁!

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

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

更多信息請查看IT技術專欄

更多信息請查看數(shù)據(jù)庫
易賢網(wǎng)手機網(wǎng)站地址:如何優(yōu)化Mysql千萬級快速分頁

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網(wǎng)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
久久精品国产999大香线蕉| 国产精品久久午夜| 亚洲高清网站| 一本久道久久综合狠狠爱| 日韩视频中文| 亚洲女人av| 免费毛片一区二区三区久久久| 久久尤物视频| 毛片基地黄久久久久久天堂| 麻豆久久精品| 国产小视频国产精品| 亚洲精品欧洲| 欧美在线国产| 欧美日韩网站| 久久精品国产精品亚洲| 亚洲精品欧美激情| 国产亚洲免费的视频看| 欧美激情第五页| 久久精视频免费在线久久完整在线看| 亚洲第一精品影视| 国产区欧美区日韩区| 欧美福利电影网| 久久国产一区二区三区| 亚洲久久一区| 伊人狠狠色j香婷婷综合| 欧美日韩一区免费| 国产精品高潮呻吟久久av无限| 亚洲先锋成人| 亚洲五月婷婷| 一区二区三区视频在线看| 亚洲高清不卡一区| 国产亚洲一区二区三区| 国产精品久久亚洲7777| 欧美日韩亚洲三区| 欧美日韩亚洲在线| 老司机亚洲精品| 久久精品国产999大香线蕉| 一区二区三区欧美日韩| 亚洲免费黄色| 一区二区三区国产在线| 亚洲最快最全在线视频| 亚洲三级性片| 亚洲视频在线一区| 国产精品99久久久久久久久| 99热精品在线| 亚洲在线中文字幕| 欧美伊人久久大香线蕉综合69| 欧美在线视频免费| 久久一区欧美| 欧美三级电影精品| 国产欧美日韩在线观看| 狠狠综合久久| 99亚洲视频| 午夜精品一区二区在线观看| 久久久91精品国产一区二区精品| 久久久久久网址| 男人的天堂亚洲在线| 美女视频一区免费观看| 欧美少妇一区二区| 国产精品久久久久久模特| 国产日韩一区二区三区| 亚洲国产成人在线视频| 日韩午夜精品视频| 亚洲欧美欧美一区二区三区| 亚洲一区二三| 免费人成精品欧美精品| 国产精品尤物| 一区二区三区四区在线| 久久久另类综合| 国产精品一二三四| 一本色道久久综合| 久久综合九色综合久99| 国产精品一区二区欧美| 99精品国产在热久久婷婷| 欧美一区二区三区在| 国产精品视频yy9099| 一本色道久久综合亚洲精品高清| 久久国产乱子精品免费女| 日韩午夜在线视频| 亚洲欧美日韩精品综合在线观看 | 亚洲福利视频三区| 另类国产ts人妖高潮视频| 久久嫩草精品久久久精品| 亚洲精品国产视频| 激情久久综艺| 国产一区在线视频| 欧美.www| 蜜臀久久99精品久久久久久9| 国产精品电影观看| 老司机午夜精品视频| 欧美日韩天天操| 亚洲国产精品一区二区www在线| 亚洲一二三区精品| 国产精品久久一级| 欧美一二三视频| 国产一区二区电影在线观看| 欧美一区二区三区免费视频| 国产乱码精品一区二区三| 一区二区三区av| 蜜臀99久久精品久久久久久软件| 在线电影国产精品| 蜜臀av性久久久久蜜臀aⅴ| 一区免费观看视频| 美女视频网站黄色亚洲| 一区二区三区欧美成人| 黑人巨大精品欧美一区二区 | 亚洲在线播放| 国产在线观看精品一区二区三区| 六月婷婷久久| 亚洲视频高清| 伊大人香蕉综合8在线视| 欧美午夜影院| 欧美日韩精品二区| 麻豆成人在线播放| 欧美在线视频免费| 亚洲午夜女主播在线直播| 精品成人一区二区| 国产精品日韩欧美一区二区| 欧美精品日韩综合在线| 久久精品噜噜噜成人av农村| 亚洲精品视频在线看| 精品成人免费| 国语精品一区| 国产最新精品精品你懂的| 国产日韩免费| 国产精品久久久久久久久借妻 | 国产在线精品成人一区二区三区| 欧美日韩不卡在线| 欧美高清视频一区二区| 美日韩精品免费| 久久午夜国产精品| 久久久久久9| 久久久午夜电影| 久久夜色精品国产欧美乱| 久久一区二区精品| 欧美激情一区二区三区在线视频观看 | 欧美成人69| 欧美激情在线播放| 欧美日韩国产一区精品一区| 欧美日韩精品系列| 精品69视频一区二区三区| 欧美亚洲视频| 亚洲第一精品夜夜躁人人爽 | 极品av少妇一区二区| 亚洲视频一区| 欧美日韩成人综合天天影院| 在线免费观看欧美| 欧美国产日韩在线观看| 狠狠色狠狠色综合日日tαg| 久久午夜视频| 怡红院精品视频在线观看极品| 欧美日韩国产免费观看| 欧美区高清在线| 欧美日韩系列| 国产精品麻豆va在线播放| 国产精品高潮视频| 国产精品网站在线观看| 国产精品人人做人人爽人人添| 欧美性色综合| 国产欧美日韩亚洲一区二区三区| 亚洲电影中文字幕| 亚洲黄色大片| 亚洲在线免费| 国产精品一级| 极品少妇一区二区| 亚洲欧美日韩国产成人精品影院| 久久精品日产第一区二区| 欧美成人dvd在线视频| 国产女主播在线一区二区| 亚洲精品综合| 欧美va亚洲va国产综合| 国产亚洲午夜| 欧美一区二区三区精品电影| 国产精品国产精品| 夜夜夜精品看看| 欧美精品在线观看一区二区| 伊人夜夜躁av伊人久久| 性欧美超级视频| 国产精品毛片a∨一区二区三区|国 | 一区二区三区视频免费在线观看| 麻豆免费精品视频| 亚洲欧洲日产国产综合网| 欧美激情第4页| 亚洲日韩成人| 欧美视频久久| 欧美在线免费一级片| 极品日韩av| 国产精品视频福利| 欧美在线免费视频| 国产精品日韩精品欧美精品| 亚洲视频一区二区在线观看| 欧美女主播在线| 日韩视频在线免费观看| 国产精品久久久久久久久久久久久| 欧美高清你懂得| 黑丝一区二区三区| 老色鬼精品视频在线观看播放| 亚洲经典在线看| 国产精品九九久久久久久久| 亚洲色图在线视频|