国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - 高效的mysql分頁方法及原理

高效的mysql分頁方法及原理

2020-01-09 16:42MYSQL教程網 Mysql

這篇文章介紹了高效的mysql分頁方法及原理,有需要的朋友可以參考一下

首先看一下分頁的基本原理:

復制代碼代碼如下:


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行,在一個高并發的應用里,每次查詢需要掃描超過10W行,性能肯定大打折扣。文中還提到limit n性能是沒問題的,因為只掃描n行。

 

文中提到一種”clue”的做法,給翻頁提供一些”線索”,比如還是SELECT * FROM message ORDER BY id DESC,按id降序分頁,每頁20條,當前是第10頁,當前頁條目id最大的是9527,最小的是9500,如果我們只提供”上一頁”、”下一頁”這樣的跳轉(不提供到第N頁的跳轉),那么在處理”上一頁”的時候SQL語句可以是:

復制代碼代碼如下:

SELECT * FROM message WHERE id > 9527 ORDER BY id ASC LIMIT 20;

 

處理”下一頁”的時候SQL語句可以是:

復制代碼代碼如下:

SELECT * FROM message WHERE id < 9500 ORDER BY id DESC LIMIT 20;


不管翻多少頁,每次查詢只掃描20行。

 

缺點是只能提供”上一頁”、”下一頁”的鏈接形式,但是我們的產品經理非常喜歡”<上一頁 1 2 3 4 5 6 7 8 9 下一頁>”這樣的鏈接方式,怎么辦呢?

如果LIMIT m,n不可避免的話,要優化效率,只有盡可能的讓m小一下,我們擴展前面的”clue”做法,還是SELECT * FROM message ORDER BY id DESC,按id降序分頁,每頁20條,當前是第10頁,當前頁條目id最大的是9527,最小的是9500,比如要跳到第8頁,我看的SQL語句可以這樣寫:

 

復制代碼代碼如下:

SELECT * FROM message WHERE id > 9527 ORDER BY id ASC LIMIT 20,20;


跳轉到第13頁:

復制代碼代碼如下:

SELECT * FROM message WHERE id < 9500 ORDER BY id DESC LIMIT 40,20;


原理還是一樣,記錄住當前頁id的最大值和最小值,計算跳轉頁面和當前頁相對偏移,由于頁面相近,這個偏移量不會很大,這樣的話m值相對較小,大大減少掃描的行數。其實傳統的limit m,n,相對的偏移一直是第一頁,這樣的話越翻到后面,效率越差,而上面給出的方法就沒有這樣的問題。

 

注意SQL語句里面的ASC和DESC,如果是ASC取出來的結果,顯示的時候記得倒置一下。

已在60W數據總量的表中測試,效果非常明顯。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 一区二区三区自拍 | av一区二区在线观看 | 日韩免费一区二区 | 91久久精品一区二区二区 | 欧美一区二区三区在线观看视频 | 九九热免费精品视频 | 亚洲一一在线 | 91精品国产乱码久久久久久 | 最新国产在线视频 | 成人aaa| 亚洲精品一区二区三区蜜桃久 | 久久久久久国产精品 | 久久久久久久91 | 午夜欧美| 欧美成人一区二区三区片免费 | 欧美色阁 | av中文天堂| 国产精品久久久久久久午夜片 | 欧美一级在线观看 | 93看片淫黄大片一级 | 久久精品一 | 成人h视频| 7878www免费看片 | 成人免费视频网站在线观看 | 国产精品丝袜视频 | 日本丶国产丶欧美色综合 | 色综合天天天天做夜夜夜夜做 | 国产精品suv一区二区 | 欧美成人激情视频 | av在线电影网 | 午夜激情影院 | 一区在线视频观看 | 91在线高清视频 | 欧美一级高清免费 | 男女视频网站 | 成人影音 | 午夜网址| 激情一区二区三区 | 日韩一区二区视频在线 | 一区二区三区在线免费视频 | 天堂资源在线 |