第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么MySQL更高的限制抵消了查詢慢下來?

為什么MySQL更高的限制抵消了查詢慢下來?

一只斗牛犬 2019-07-02 15:58:49
為什么MySQL更高的限制抵消了查詢慢下來?簡而言之:一個記錄超過1600萬條(2GB)的表。SELECT的限制偏移量越高,使用ORDERBY*PRIMARY_KEY*查詢的速度就越慢所以SELECT * FROM large ORDER BY `id`  LIMIT 0, 30比SELECT * FROM large ORDER BY `id` LIMIT 10000, 30只訂購了30條記錄和同樣的方式。所以這不是訂單的開銷?,F(xiàn)在,當獲取最新的30行時,大約需要180秒。如何優(yōu)化這個簡單的查詢?
查看完整描述

3 回答

?
慕后森

TA貢獻1802條經(jīng)驗 獲得超5個贊

我自己也有同樣的問題??紤]到您希望收集大量的此數(shù)據(jù),而不是特定的30集,您可能會運行一個循環(huán),并將偏移量增加30。

所以你可以做的是:

  1. 保存一組數(shù)據(jù)(30)的最后一個id(例如lastId=530)
  2. 添加條件

    WHERE id > lastId limit 0,30

所以你總是可以有一個零偏移。你會驚訝于性能的提高。


查看完整回答
反對 回復(fù) 2019-07-02
?
慕尼黑的夜晚無繁華

TA貢獻1864條經(jīng)驗 獲得超6個贊

MySQL不能直接轉(zhuǎn)到第10000條記錄(或者你建議的80萬字節(jié)),因為它不能假設(shè)它是那樣打包/排序的(或者它有1到10000的連續(xù)值)。雖然實際上可能是這樣,但MySQL不能假設(shè)沒有漏洞/空白/刪除ID。

因此,正如bobs所指出的,mysql將需要獲取10000行(或遍歷索引的第10000個條目)。id)在找到30點要返回之前。

編輯*說明我的觀點

注意,盡管

SELECT * FROM large ORDER BY id LIMIT 10000, 30

會是慢(呃),

SELECT * FROM large WHERE id >  10000 ORDER BY id LIMIT 30

會是快(呃),并將返回相同的結(jié)果,前提是不缺少ids(即差距)。


查看完整回答
反對 回復(fù) 2019-07-02
  • 3 回答
  • 0 關(guān)注
  • 503 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號