欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在大數(shù)據(jù)情況下MySQL的一種簡單分頁優(yōu)化方法

 更新時間:2015年05月08日 10:13:27   作者:羅龍九  
這篇文章主要介紹了在大數(shù)據(jù)情況下MySQL的一種簡單分頁優(yōu)化方法,分頁優(yōu)化是MySQL優(yōu)化的常用手段之一,需要的朋友可以參考下

通常應(yīng)用需要對表中的數(shù)據(jù)進行翻頁,如果數(shù)據(jù)量很大,往往會帶來性能上的問題:

root@sns 07:16:25>select count(*) from reply_0004 where thread_id = 5616385 and deleted = 0;
+———-+
| count(*) |
+———-+
| 1236795 |
+———-+
1 row in set (0.44 sec)
root@sns 07:16:30>select id
from reply_0004 where thread_id = 5616385 and deleted = 0
order by id asc limit 1236785, 10 ;
+———–+
| id    |
+———–+
| 162436798 |
| 162438180 |
| 162440102 |
| 162442044 |
| 162479222 |
| 162479598 |
| 162514705 |
| 162832588 |
| 162863394 |
| 162899685 |
+———–+
10 rows in set (1.32 sec)

索引:threa_id+deleted+id(gmt_Create)
10 rows in set (1.32 sec)
這兩條sql是為查詢最后一頁的翻頁sql查詢用的。由于一次翻頁往往只需要查詢較小的數(shù)據(jù),如10條,但需要向后掃描大量的數(shù)據(jù),也就是越往后的翻頁查詢,掃描的數(shù)據(jù)量會越多,查詢的速度也就越來越慢。
由于查詢的數(shù)據(jù)量大小是固定的,如果查詢速度不受翻頁的頁數(shù)影響,或者影響最低,那么這樣是最佳的效果了(查詢最后最幾頁的速度和開始幾頁的速度一致)。
在翻頁的時候,往往需要對其中的某個字段做排序(這個字段在索引中),升序排序。那么可不可以利用索引的有序性來解決上面遇到的問題喃,答案是肯定的。比如有10000條數(shù)據(jù)需要做分頁,那么前5000條做asc排序,后5000條desc排序,在limit startnum,pagesize參數(shù)中作出相應(yīng)的調(diào)整。
但是這無疑給應(yīng)用程序帶來復(fù)雜,這條sql是用于論壇回復(fù)帖子的sql,往往用戶在看帖子的時候,一般都是查看前幾頁和最后幾頁,那么在翻頁的時候最后幾頁的翻頁查詢采用desc的方式來實現(xiàn)翻頁,這樣就可以較好的提高性能:

root@snsgroup 07:16:49>select * from (select id

->      from group_thread_reply_0004 where thread_id = 5616385 and deleted = 0

->    order by id desc limit 0, 10)t order by t.id asc;

+———–+

| id    |

+———–+

| 162436798 |

| 162438180 |

| 162440102 |

| 162442044 |

| 162479222 |

| 162479598 |

| 162514705 |

| 162832588 |

| 162863394 |

| 162899685 |

+———–+

10 rows in set (0.87 sec)

可以看到性能提升了50%以上。

相關(guān)文章

  • MYSQL 數(shù)據(jù)庫命名與設(shè)計規(guī)范

    MYSQL 數(shù)據(jù)庫命名與設(shè)計規(guī)范

    對于MYSQL 數(shù)據(jù)庫的命名與設(shè)計,需要一定的規(guī)范,所以我們要了解和快速的掌握mysql有很多的幫助。
    2008-12-12
  • linux二進制通用包安裝mysql5.6.20教程

    linux二進制通用包安裝mysql5.6.20教程

    這篇文章主要為大家詳細介紹了linux二進制通用包安裝mysql5.6.20的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 為什么MySQL分頁用limit會越來越慢

    為什么MySQL分頁用limit會越來越慢

    在mysql中l(wèi)imit可以實現(xiàn)快速分頁,但是如果數(shù)據(jù)到了幾百萬時我們的limit必須優(yōu)化才能有效的合理的實現(xiàn)分頁了,否則可能卡死你的服務(wù)器
    2021-07-07
  • MySQL悲觀鎖與樂觀鎖的實現(xiàn)方案

    MySQL悲觀鎖與樂觀鎖的實現(xiàn)方案

    我們知道Mysql并發(fā)事務(wù)會引起更新丟失問題,解決辦法是鎖,所以本文將對鎖(樂觀鎖、悲觀鎖)進行分析,這篇文章主要給大家介紹了關(guān)于MySQL悲觀鎖與樂觀鎖方案的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • Mysql中的嵌套子查詢問題

    Mysql中的嵌套子查詢問題

    這篇文章主要介紹了Mysql嵌套子查詢,子查詢就是指的在一個完整的查詢語句之中,嵌套若干個不同功能的小查詢,從而一起完成復(fù)雜查詢的一種編寫形式,為了讓讀者更加清楚子查詢的概念,感興趣的朋友跟隨小編一起看看吧
    2022-01-01
  • MySQL 存儲過程中執(zhí)行動態(tài)SQL語句的方法

    MySQL 存儲過程中執(zhí)行動態(tài)SQL語句的方法

    這篇文章主要介紹了MySQL 存儲過程中執(zhí)行動態(tài)SQL語句的方法,需要的朋友可以參考下
    2014-08-08
  • mysql使用教程之分區(qū)表的使用方法(刪除分區(qū)表)

    mysql使用教程之分區(qū)表的使用方法(刪除分區(qū)表)

    mysql分區(qū)表使用方法,新增分區(qū)、刪除分區(qū)、分區(qū)的合并、分區(qū)的拆分等使用方法
    2013-12-12
  • MySQL?驅(qū)動中虛引用?GC?耗時優(yōu)化與源碼分析

    MySQL?驅(qū)動中虛引用?GC?耗時優(yōu)化與源碼分析

    這篇文章主要為大家介紹了MySQL?驅(qū)動中虛引用?GC?耗時優(yōu)化與源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • CentOS7 64位下MySQL5.7安裝與配置教程

    CentOS7 64位下MySQL5.7安裝與配置教程

    這篇文章主要介紹了CentOS7 64位下MySQL5.7安裝與配置教程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Mysql性能優(yōu)化之索引下推

    Mysql性能優(yōu)化之索引下推

    這篇文章主要介紹了Mysql性能優(yōu)化之索引下推,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評論