mysql裏面,limit效率不高,特別是我幾大百萬數據,limit 100000, 50,這樣寫,查詢更是慢死,剛開始還挺快,後面服務器cup直接給我拉滿!
我還以爲是服務器被入侵了,於是找問題啊,找了幾天,結果發現是這個狗東西,可把我氣死了!
於是查詢了一下limit的原理,emmm,改!必須改!
於是最開始的代碼爲:
SELECT * FROM phome_ecms_news ORDER BY id DESC LIMIT 1275480,20;
改成了,這樣:
SELECT * FROM phome_ecms_news WHERE id>1275480 ORDER BY id DESC LIMIT 20;
我這裏簡單說一下LIMIT的原理。這裏以LIMIT N,M爲基礎:LIMIT首先要找查N+M行,然後從N行處,取M行。那麼這樣的SQL對一次查詢1275500一個操作應該是一個昂貴的開銷。對於LIMIT這類的優化,第一個目標就是讓N變的儘可能的小或是不用。