国产探花免费观看_亚洲丰满少妇自慰呻吟_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; www.survivalescaperooms.com 
  2. SELECT * FROM your_table WHERE ID >= ( SELECT id FROM your_table ORDER BY id ASC LIMIT 1000001,1) LIMIT 20;  

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庐江县| 林口县| 东平县| 皋兰县| 中西区| 松江区| 五峰| 永寿县| 霞浦县| 武定县| 北碚区| 兴义市| 宿迁市| 浙江省| 武强县| 鸡泽县| 玉屏| 商丘市| 融水| 崇阳县| 古蔺县| 尉犁县| 皋兰县| 攀枝花市| 姚安县| 车致| 墨玉县| 乳源| 云南省| 南平市| 南乐县| 屯昌县| 石棉县| 阿图什市| 得荣县| 兴安县| 兰溪市| 武宣县| 资阳市| 东莞市| 安宁市|