激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - MySQL查詢中LIMIT的大offset導致性能低下淺析

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

2019-06-14 10:13craneyuan服務器之家 Mysql

這篇文章主要給大家介紹了關于MySQL查詢中LIMIT的大offset導致性能低下的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

我們大家都知道,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
  ) q
JOIN myTable t
ON  t.id = q.id

大概的原理是:

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

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

后記

未完待續。

參考資料

總結

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一级淫片免费视频1 | 亚洲片在线观看 | 久久国产精品系列 | 亚洲va久久久噜噜噜久牛牛影视 | 成人情欲视频在线看免费 | 精品久久久久久久久久久久包黑料 | 日韩精品网站在线观看 | 日韩精品久久一区二区三区 | 久久精品视频在线免费观看 | 妇女毛片 | 成人免费午夜视频 | 免费观看黄视频 | 国外成人在线视频 | 思思久而久而蕉人 | 狠狠干天天操 | 欧美精品一区二区三区久久久 | 中国妞xxxhd露脸偷拍视频 | 亚洲va久久久噜噜噜久牛牛影视 | 日韩欧美电影一区二区三区 | 黄色一级片免费观看 | 91色成人 | 黄色片视频观看 | 欧美黄色性视频 | 黄视频网站免费在线观看 | 噜噜色av| 国产精品aⅴ | av在线电影网 | 一日本道久久久精品国产 | 最污网站 | 久久久久亚洲美女啪啪 | 性欧美一区二区 | 欧美精品一区二区性色 | 黄污网站在线 | 性片网站| 成人在线观看一区二区三区 | 欧美精品一区二区视频 | 亚洲第一视频 | 日韩毛片在线看 | 香蕉视频h | 在线91视频| 久久久久久久九九九九 |