如何優化Mysql千萬級快速分頁

時間 2025-05-23 07:35:21

mysql深分頁調優實戰

1樓:戶如樂

每個商品的所有評論都是放在乙個庫的一張橋毀空表裡,確保作為使用者在分頁查詢乙個商品的評論時,一般都是直接從乙個庫的一張表裡執行分頁查詢語句即可。

熱門商品銷量多達上百萬,商品評論可能多達幾十萬條。有些使用者就喜歡看商品評論,他就喜歡不停對某個熱門商品評論不斷進行分頁,一頁一頁翻,有時候還會用上分頁跳轉功能,就是直接輸入自己要跳到第幾頁。

同時還選了只看好評,所以is_good_commit也要限定,接著看第5001頁評論,則limit的offset=(5001 - 1) *20,20是每頁的餘和數量, 此時起始offset就是100000,所以limit後100000,20。

所以正常肯定走這索引:

該過程有幾十萬次回表查詢,還有十多萬條資料的磁碟檔案排序,所以要跑個1~2s。如何優化呢?

但本案例不是這樣,因為。

這倆條件不是乙個聯合索引,所以會出現大量回表,耗時嚴重。

因此對該案例,一般採取如下方式改造分頁查詢語句:

該sql的執行計劃就會徹底改變其執行方式。

通常先執行括號裡的子查詢,子查詢反而會使用primary聚簇索引,按聚簇索引id值的倒序方向進行掃瞄,掃瞄過程中就把符合。

的資料篩選出來。

比如這裡篩選出10w條資料,並不需要把符合條件的資料都找到,因為limit 100000,20,理論上,只要有100000+20條符合條件的資料,且按id有序的,此時就能執行根據limit 100000,20提取到5001頁的這20條資料。

接著你會看到執行計劃裡會針對這個子查詢的結果集,乙個臨時表,進行全表掃瞄,拿到20條資料,再對20條資料遍歷,每條資料都敏瞎按id去聚簇索引查詢一下完整資料。

所以本案例,反而是優化成這種方式來執行分頁,更合適,他只有乙個掃瞄【聚簇索引】篩選符合你分頁所有資料的成本:

然後再做一頁20條資料的20次回表查詢即可。當時做了該分頁優化後,發現分頁語句一下子執行時間降低到了幾百ms,達到優化目的。

sql調優沒有銀彈:

不同場景,要具體情況具體分析,到底慢在哪兒,再針對性優化。

如何快速批量刪除Mysql資料庫中的資料表

一 使用phpmyadmin工具批量刪除mysql資料庫表。使用phpmyadmin資料庫管理工具進行刪除,這是一個傳統的方法,在任何php虛擬主機中,你都可以操作。下面是操作過程介紹 1 登入phpmyadmin。選擇你的mysql資料庫名進入 點選結構 選擇您要刪除的資料表 選中項 中選擇刪除,...

孩子中考前,如何快速提分,臨近中考,如何快速提分?

雲南新華電腦學校 總有一些同學在臨近中考 高考的時候產生多種不適,比如焦慮 煩躁 失眠 頭痛等。各人的對事物的看法不同,心理素質不同,因此緊張的程度也不同,如果過分緊張,或者壓力過大的化,就會嚴重影響最後關鍵時段的學習,下面介紹一些緩解壓力,克服心理不適的方法,僅供考生參考 宣洩釋放法 壓力 煩躁情...

魔獸55級FS如何快速公升級?

路線,暴怪。如果你是lm,就首選 悔恨領,都是級左右的亡靈怪。而且基本上是lm的地盤。在下並不推薦去暴西瘟疫農場,因為那是pk勝地。我強烈推薦 厄運刷小花,經驗高,暴的東西也很多 具體怎麼做,baidu搜尋會有很多,包括地圖,路線等,都介紹的很詳細。最後祝願樓主在魔獸世界裡玩的順利。任務多做做,級麼...