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

首頁 > 數據庫 > MySQL > 正文

在大數據情況下MySQL的一種簡單分頁優化方法

2024-07-24 13:07:09
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了在大數據情況下MySQL的一種簡單分頁優化方法,分頁優化是MySQL優化的常用手段之一,需要的朋友可以參考下

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

 

 
  1. root@sns 07:16:25>select count(*) from reply_0004 where thread_id = 5616385 and deleted = 0; 
  2. +———-+ 
  3. count(*) | 
  4. +———-+ 
  5. | 1236795 | 
  6. +———-+ 
  7. 1 row in set (0.44 sec) 
  8. root@sns 07:16:30>select id 
  9. from reply_0004 where thread_id = 5616385 and deleted = 0 
  10. order by id asc limit 1236785, 10 ; 
  11. +———–+ 
  12. | id | 
  13. +———–+ 
  14. | 162436798 | 
  15. | 162438180 | 
  16. | 162440102 | 
  17. | 162442044 | 
  18. | 162479222 | 
  19. | 162479598 | 
  20. | 162514705 | 
  21. | 162832588 | 
  22. | 162863394 | 
  23. | 162899685 | 
  24. +———–+ 
  25. 10 rows in set (1.32 sec) 

索引:threa_id+deleted+id(gmt_Create)

10 rows in set (1.32 sec)

這兩條sql是為查詢最后一頁的翻頁sql查詢用的。由于一次翻頁往往只需要查詢較小的數據,如10條,但需要向后掃描大量的數據,也就是越往后的翻頁查詢,掃描的數據量會越多,查詢的速度也就越來越慢。

由于查詢的數據量大小是固定的,如果查詢速度不受翻頁的頁數影響,或者影響最低,那么這樣是最佳的效果了(查詢最后最幾頁的速度和開始幾頁的速度一致)。

在翻頁的時候,往往需要對其中的某個字段做排序(這個字段在索引中),升序排序。那么可不可以利用索引的有序性來解決上面遇到的問題喃,答案是肯定的。比如有10000條數據需要做分頁,那么前5000條做asc排序,后5000條desc排序,在limit startnum,pagesize參數中作出相應的調整。

但是這無疑給應用程序帶來復雜,這條sql是用于論壇回復帖子的sql,往往用戶在看帖子的時候,一般都是查看前幾頁和最后幾頁,那么在翻頁的時候最后幾頁的翻頁查詢采用desc的方式來實現翻頁,這樣就可以較好的提高性能:

 

 
  1. root@snsgroup 07:16:49>select * from (select id 
  2.  
  3. -> from group_thread_reply_0004 where thread_id = 5616385 and deleted = 0 
  4.  
  5. -> order by id desc limit 0, 10)t order by t.id asc
  6.  
  7. +———–+ 
  8.  
  9. | id | 
  10.  
  11. +———–+ 
  12.  
  13. | 162436798 | 
  14.  
  15. | 162438180 | 
  16.  
  17. | 162440102 | 
  18.  
  19. | 162442044 | 
  20.  
  21. | 162479222 | 
  22.  
  23. | 162479598 | 
  24.  
  25. | 162514705 | 
  26.  
  27. | 162832588 | 
  28.  
  29. | 162863394 | 
  30.  
  31. | 162899685 | 
  32.  
  33. +———–+ 
  34.  
  35. 10 rows in set (0.87 sec) 

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沁水县| 涞水县| 宝应县| 藁城市| 巨野县| 唐河县| 商河县| 黄山市| 韶山市| 泾源县| 海兴县| 遂川县| 渑池县| 徐闻县| 安国市| 高陵县| 开阳县| 大方县| 浪卡子县| 佳木斯市| 工布江达县| 柯坪县| 梁山县| 大同市| 马尔康县| 神农架林区| 历史| 东至县| 安福县| 拉孜县| 广德县| 康平县| 公主岭市| 尉氏县| 韶山市| 泊头市| 北安市| 龙里县| 唐海县| 济阳县| 万安县|