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

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

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

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

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

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運(yùn)行net start mysql報(bào)服務(wù)名無(wú)效的解決辦法

    mysql運(yùn)行net start mysql報(bào)服務(wù)名無(wú)效的解決辦法

    這篇文章主要為大家詳細(xì)介紹了mysql運(yùn)行net start mysql報(bào)服務(wù)名無(wú)效的解決辦法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 一文詳解MySQL不同隔離級(jí)別都使用什么鎖

    一文詳解MySQL不同隔離級(jí)別都使用什么鎖

    這篇文章主要為大家詳細(xì)介紹了在MySQL中不同隔離級(jí)別都會(huì)使用什么鎖,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)MySQL有一定幫助,需要的可以參考一下
    2022-09-09
  • MySQL定時(shí)備份方案(利用Linux crontab)

    MySQL定時(shí)備份方案(利用Linux crontab)

    這篇文章主要給大家介紹了關(guān)于MySQL定時(shí)備份方案的相關(guān)資料,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 詳解MySQL單列索引和聯(lián)合索引

    詳解MySQL單列索引和聯(lián)合索引

    聯(lián)合索引的結(jié)構(gòu)與電話簿類似,人名由姓和名構(gòu)成,電話簿首先按姓氏進(jìn)行排序,然后按名字對(duì)有相同姓氏的人進(jìn)行排序,這篇文章主要介紹了MySQL單列索引和聯(lián)合索引,需要的朋友可以參考下
    2022-09-09
  • Eclipse與MySQL數(shù)據(jù)庫(kù)的連接教程(已實(shí)操)

    Eclipse與MySQL數(shù)據(jù)庫(kù)的連接教程(已實(shí)操)

    用eclipse編寫的好的代碼,我們?cè)趺床拍苓B接到數(shù)據(jù)庫(kù)呢?下面這篇文章主要給大家介紹了關(guān)于Eclipse與MySQL數(shù)據(jù)庫(kù)連接的相關(guān)資料,下面的操作是經(jīng)本人驗(yàn)證,確實(shí)可行,需要的朋友可以參考下
    2023-05-05
  • MySQL表的CURD操作(數(shù)據(jù)的增刪改查)

    MySQL表的CURD操作(數(shù)據(jù)的增刪改查)

    數(shù)據(jù)庫(kù)本質(zhì)上是一個(gè)文件系統(tǒng),通過(guò)標(biāo)準(zhǔn)的SQL語(yǔ)句對(duì)數(shù)據(jù)進(jìn)行CURD操作,下面這篇文章主要給大家介紹了關(guān)于MySQL表的CURD操作的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • MySQL中USING 和 HAVING 用法實(shí)例簡(jiǎn)析

    MySQL中USING 和 HAVING 用法實(shí)例簡(jiǎn)析

    這篇文章主要介紹了MySQL中USING 和 HAVING 用法,結(jié)合實(shí)例形式簡(jiǎn)單分析了mysql中USING 和 HAVING的功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-08-08
  • MySQL數(shù)據(jù)庫(kù)操作DQL正則表達(dá)式

    MySQL數(shù)據(jù)庫(kù)操作DQL正則表達(dá)式

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)操作DQL正則表達(dá)式,正則表達(dá)式描述了一種字符串匹配的規(guī)則,正則表達(dá)式本身就是一個(gè)字符串,使用這個(gè)字符串來(lái)描述、用來(lái)定義匹配規(guī)則,匹配一系列符合某個(gè)句法規(guī)則的字符串
    2022-07-07
  • Windows 8下MySQL Community Server 5.6安裝配置方法圖文教程

    Windows 8下MySQL Community Server 5.6安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了Windows 8下MySQL Community Server 5.6安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • MySQL 重裝MySQL后, mysql服務(wù)無(wú)法啟動(dòng)

    MySQL 重裝MySQL后, mysql服務(wù)無(wú)法啟動(dòng)

    把mysql程序卸載后, 重裝, 結(jié)果mysql服務(wù)啟動(dòng)不了,碰到這個(gè)問(wèn)題的朋友可以參考下。
    2011-08-08

最新評(píng)論