国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql中SQL分頁優化的例子

2024-07-24 12:36:34
字體:
來源:轉載
供稿:網友

mysql中分頁查詢是非常的簡單了同時也給我們大數據量帶來了一些麻煩,如果有100萬數據我們如果按普通的方法,我估計 你一條都查不出來,下面我來整理自己總結的mysql分頁優化方法,希望對各位同學會有所幫助.

SQL分頁過多時,例如 limit 1000000,20,效率會明顯降低下,如何優化?

SQLServer用的是類似:SELECT top 10 * FROM USER ORDER BY uid ASC ; 

MySQL用的是類似:SELECT * FROM USER ORDER BY uid ASC LIMIT 0,10; 

如果要顯示第二頁的數據,通常的做法是如下代碼:

SELECT * FROM USER ORDER BY uid ASC LIMIT 10,10; 

這樣的問題是,當數據量過多,越往后翻頁速度越慢,那么有什么簡單的解決辦法嗎?如下幾種方式可參考:

一、如果是連續分頁查詢,可通過上次結果中的最大id,直接定位下一頁的數據集合.

1、第一頁,代碼如下:

SELECT * FROM USER ORDER BY uid ASC LIMIT 0,10; 

2、找到最后一條記錄的uid,$uid 。

3、第二頁,代碼如下:

SELECT * FROM USER WHERE uid >$uid ORDER BY uid ASC LIMIT 0,10; 

這樣的話,由于查詢出來的結果集合變小了,所以各方面效率都高,而且后面的limit條件基本不需要改變.

二、對于主見ID連續的表,可以先通過程序計算出所需分頁位置的 ID 起始值,然后通過BETWEEN .. AND 方式提交查詢.

三、使用子查詢獲取分頁主鍵值,充分利用主鍵索引,代碼如下:

  1. SELECT t.* FROM ( SELECT id FROM you_table ORDER BY id LIMIT 1000000, 20 ) s JOIN your_table t ON t.id = s.id; m.survivalescaperooms.com 
  2. SELECT * FROM your_table WHERE ID >= ( SELECT id FROM your_table ORDER BY id ASC LIMIT 1000001,1) LIMIT 20;  

四、采用NoSQL或單獨的表作為索引表,或按數據新舊冷熱等規則分表存儲.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庐江县| 紫金县| 镇平县| 临桂县| 偏关县| 涞水县| 江都市| 革吉县| 五家渠市| 团风县| 合作市| 德令哈市| 信阳市| 昭苏县| 大冶市| 历史| 潮州市| 长葛市| 阳城县| 韶关市| 塔城市| 循化| 醴陵市| 德惠市| 凯里市| 乐至县| 定西市| 成安县| 新平| 阜城县| 梁山县| 溧水县| 庄浪县| 德州市| 温泉县| 玉田县| 长宁区| 竹溪县| 长宁区| 邮箱| 从江县|