婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL查詢中LIMIT的大offset導致性能低下淺析

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

熱門標簽:外呼系統防封號違法嗎 寶應電信400電話辦理費用 如何在高德地圖標注新地址 湘潭電銷機器人咨詢電話 高德地圖標注中心個人注冊 高德地圖標注模式 400電話辦理都選易號網 外呼系統服務 電銷機器人針對的

前言

我們大家都知道,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

后記

未完待續。

參考資料

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

總結

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

您可能感興趣的文章:
  • MySql分頁時使用limit+order by會出現數據重復問題解決
  • 為什么MySQL分頁用limit會越來越慢
  • mysql優化之query_cache_limit參數說明
  • 詳解Mysql order by與limit混用陷阱
  • MySQL limit分頁大偏移量慢的原因及優化方案
  • Mysql排序和分頁(order by&limit)及存在的坑
  • MySQL用limit方式實現分頁的實例方法
  • MySQL limit使用方法以及超大分頁問題解決
  • 淺談MySQL分頁Limit的性能問題
  • MySQL limit性能分析與優化
  • MySQL 用 limit 為什么會影響性能

標簽:蘭州 佛山 黔南 南充 黃山 賀州 宿遷 馬鞍山

巨人網絡通訊聲明:本文標題《MySQL查詢中LIMIT的大offset導致性能低下淺析》,本文關鍵詞  MySQL,查詢,中,LIMIT,的大,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL查詢中LIMIT的大offset導致性能低下淺析》相關的同類信息!
  • 本頁收集關于MySQL查詢中LIMIT的大offset導致性能低下淺析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 古田县| 商都县| 娱乐| 班玛县| 云和县| 楚雄市| 文登市| 尉氏县| 鹤山市| 池州市| 金堂县| 绥德县| 顺昌县| 边坝县| 淅川县| 崇左市| 海丰县| 大荔县| 常熟市| 龙海市| 林芝县| 牟定县| 德化县| 定结县| 筠连县| 宜章县| 乐业县| 苏尼特左旗| 吴堡县| 双流县| 岳普湖县| 保山市| 绥化市| 郸城县| 青海省| 娄底市| 托克托县| 华蓥市| 黄大仙区| 调兵山市| 辽宁省|