中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中怎么實現百萬級數據量分頁查詢

發布時間:2021-07-13 15:21:43 來源:億速云 閱讀:510 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關MySQL中怎么實現百萬級數據量分頁查詢,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

方法一:直接使用數據庫提供的SQL語句

語句樣式:MySQL中可用如下方法:

select * from table_name limit m, n;

適用場景:適用于數據量較少的情況(元組百/千級)

原因/缺點: 全表掃描,速度會很慢 且 有的數據庫結果集返回不穩定(如某次返回1,2,3,另外的一次返回2,1,3). limit限制的是從結果集的 m 位置處取出 n 條輸出,其余拋棄.

方法二:建立主鍵或唯一索引,利用索引(假設每頁10條)

語句樣式: MySQL中,可用如下方法:

select * from table_name where id_pk > (pageNum*10) limit m;

適應場景: 適用于數據量多的情況(元組數上萬)

原因: 索引掃描,速度會很快. 有朋友提出: 因為數據查詢出來并不是按照pk_id排序的,所以會有漏掉數據的情況,只能方法3

方法三:基于索引再排序

語句樣式,MySQL中可用如下方法:

select * from table_name where id_pk > (pageNum * 10) order by id_pk asc limit m;

適應場景: 適用于數據量多的情況(元組數上萬). 最好 order by 后的列對象是主鍵或唯一所以,使得 order by 操作能利用索引被消除但結果集是穩定的(穩定的含義,參見方法1)

原因: 索引掃描,速度會很快. 但MySQL的排序操作,只有 asc 沒有 desc ( desc 是假的,未來會做真正的 desc ,期待…).

方法四:基于索引使用prepare

第一個問號表示pageNum,第二個問號表示每頁元組數

語句樣式,MySQL中可用如下方法:

prepare stmt_name from select * from table_name where id_pk > (? * ?) order by id_pk asc limit m;

適應場景: 大數據量

原因: 索引掃描,速度會很快. prepare語句又比一般的查詢語句快一點。

方法五:利用MySQL支持order操作可以利用索引快速定位部分元祖,避免全表掃描

比如:讀第1000到1019行元組(pk是主鍵/唯一鍵).

select * from your_table where pa >= 1000 order by pk asc limit 0,20;

方法六:利用"子查詢/連接+索引"快速定位元祖的位置,然后再讀取元祖。

比如(id是主鍵/唯一鍵,藍色字體時變量)

利用子查詢示例:

select * from your_table where id <= (select id from your_table order by id desc limit ($page - 1) * $pagesize order by id desc limit $pagesize)

利用連接示例:

select * from your_table as t1join (select id from your_table order by id desc limit ($page - 1) * $pagesize as t2 where t1.id <= t2.id order by t1.id desc limit $pagesize);

mysql大數據量使用limit分頁,隨著頁碼的增大,查詢效率越低下。

上述就是小編為大家分享的MySQL中怎么實現百萬級數據量分頁查詢了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永城市| 醴陵市| 沾益县| 延边| 宣威市| 自贡市| 阳信县| 乌拉特前旗| 磐安县| 庆城县| 洛宁县| 泾源县| 岳阳县| 社会| 宿松县| 巫溪县| 太仆寺旗| 渝北区| 大邑县| 西宁市| 文水县| 灌云县| 海伦市| 肇州县| 海丰县| 娄底市| 新津县| 阳东县| 临沂市| 广饶县| 敦化市| 衡阳市| 靖江市| 通渭县| 清远市| 吕梁市| 苗栗县| 肇庆市| 洮南市| 安康市| 衡水市|