五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

MySQL查詢中LIMIT的大offset導(dǎo)致性能低下淺析

發(fā)布日期:2022-03-16 15:11 | 文章來(lái)源:源碼之家


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

我們?cè)跇I(yè)務(wù)系統(tǒng)中難免少不了分頁(yè)的需求。想到分頁(yè)的時(shí)候,大家肯定會(huì)想到使用SQL中的LIMIT來(lái)實(shí)現(xiàn)。但是,如果不正確的使用LIMIT會(huì)導(dǎo)致性能問(wèn)題(SQL執(zhí)行得很慢、有可能會(huì)拖垮服務(wù)器),也會(huì)被領(lǐng)導(dǎo)批的;所以,我們來(lái)看看如何正確地使用LIMIT。

下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧

LIMIT OFFSET, ROW_COUNT 實(shí)現(xiàn)分頁(yè)

存在性能問(wèn)題的方式

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

寫出這樣SQL語(yǔ)句的人肯定心里是這樣想的:MySQL數(shù)據(jù)庫(kù)會(huì)直接定位到符合條件的第1000000位,然后再取30條數(shù)據(jù)。
然而,實(shí)際上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

大概的原理是:

  • 子查詢只用到了索引列,沒(méi)有取實(shí)際的數(shù)據(jù),所以不涉及到磁盤IO,所以即使是比較大的 offset,查詢速度也不會(huì)太差。

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

后記

未完待續(xù)。

參考資料

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)本站的支持。

海外穩(wěn)定服務(wù)器

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問(wèn)服務(wù)

1對(duì)1客戶咨詢顧問(wèn)

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部