麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

MySQL查詢中LIMIT的大offset導致性能低下淺析

2024-07-25 19:09:23
字體:
來源:轉載
供稿:網友

前言

我們大家都知道,mysql查詢使用select命令,配合limit,offset參數可以讀取指定范圍的記錄,但是offset過大影響查詢性能的原因及優化方法

我們在業務系統中難免少不了分頁的需求。想到分頁的時候,大家肯定會想到使用SQL中的LIMIT來實現。但是,如果不正確的使用LIMIT會導致性能問題(SQL執行得很慢、有可能會拖垮服務器),也會被領導批的;所以,我們來看看如何正確地使用LIMIT。

下面話不多說了,來一起看看詳細的介紹吧

LIMIT OFFSET, ROW_COUNT 實現分頁

存在性能問題的方式

SELECT * FROM myTable ORDER BY `id` LIMIT 1000000, 30 

寫出這樣SQL語句的人肯定心里是這樣想的:MySQL數據庫會直接定位到符合條件的第1000000位,然后再取30條數據。
然而,實際上MySQL不是這樣工作的。

LIMIT 1000000, 30 的意思是:掃描滿足條件的1000030行,扔掉前面的1000000行,然后返回最后的30行。

較好的方式

SELECT t.*FROM (  SELECT id  FROM myTable  ORDER BY    id  LIMIT 1000000, 30  ) qJOIN myTable tON  t.id = q.id

大概的原理是:

  • 子查詢只用到了索引列,沒有取實際的數據,所以不涉及到磁盤IO,所以即使是比較大的 offset,查詢速度也不會太差。

對具體的原理分析感興趣的朋友可以看看這篇文章:MySQL ORDER BY / LIMIT performance: late row lookups

后記

未完待續。

參考資料

  • Why does MYSQL higher LIMIT offset slow the query down?
  • MySQL ORDER BY / LIMIT performance: late row lookups

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91短视频在线播放 | 免费黄色在线电影 | 精品一区二区三区在线观看视频 | 草草视频在线 | 中文字幕在线观看视频一区 | 噜噜噜躁狠狠躁狠狠精品视频 | 在线成人免费av | 天天碰天天操 | 欧美一区二区三区中文字幕 | 激情视频免费看 | 日韩黄在线观看 | free japan xxxxhdsex69 | 久久欧美亚洲另类专区91大神 | 国产成人精品区一区二区不卡 | 在线成人免费视频 | 欧美成人午夜精品久久久 | 国产一区二区精品在线观看 | 毛片视频免费观看 | 中文字幕在线亚洲精品 | 亚洲成在人 | 色妞妞视频| 欧美日韩成人一区二区 | av在线官网 | 欧洲黄视频 | 亚洲人成在线播放网站 | 毛片免费视频网站 | 日韩高清影视 | 青青草华人在线 | 欧美aaaaaaaa | 新久草视频 | 亚洲国产精品久久久久久久久久 | 亚洲午夜不卡 | 欧美成人福利 | 国产精品性夜天天视频 | 国产午夜亚洲精品理论片大丰影院 | 一区二区久久久久草草 | 日韩视频―中文字幕 | 91精品国产综合久久男男 | 久草视频在线资源 | 亚洲小视频网站 | 国产在线看一区 |