mysql的優化是非常重要的。其他最常用也最需要優化的就是limit。mysql的limit給分頁帶來了極大的方便,但資料量一大的時候,limit的效能就急劇下降。
同樣是取10條資料
select * from yanxue8_visit limit 10000,10 和
select * from yanxue8_visit limit 0,10
就不是乙個數量級別的。
網上也很多關於limit的五條優化準則,都是翻譯自mysql手冊,雖然正確但不實用。今天發現一篇文章寫了些關於limit優化的,很不錯。
文中不是直接使用limit,而是首先獲取到offset的id然後直接使用limit size來獲取資料。根據他的資料,明顯要好於直接使用limit。這裡我具體使用資料分兩種情況進行測試。(測試環境win2033+p4雙核 (3ghz) +4g記憶體 mysql 5.0.19)
1、offset比較小的時候。
select * from yanxue8_visit limit 10,10
多次執行,時間保持在0.0004-0.0005之間
select * from yanxue8_visit where vid >=(
select vid from yanxue8_visit order by vid limit 10,1
) limit 10
多次執行,時間保持在0.0005-0.0006之間,主要是0.0006
結論:偏移offset較小的時候,直接使用limit較優。這個顯然是子查詢的原因。
2、offset大的時候。
select * from yanxue8_visit limit 10000,10
多次執行,時間保持在0.0187左右
select * from yanxue8_visit where vid >=(
select vid from yanxue8_visit order by vid limit 10000,1
) limit 10
多次執行,時間保持在0.0061左右,只有前者的1/3。可以預計offset越大,後者越優。
以後要注意改正自己的limit語句,優化一下mysql了
Mysql limit分頁優化
例如 優化後的子查詢語句還是需要獲取offset rows條資料,然後扔掉前offset條資料,但是只查詢了id乙個字段,對於資料量大的表來說,優化很多,而且,在優化後的語句裡可以使用byname的覆蓋索引 但個人認為更快的情況下 還是要在程式裡先計算出id的值 利用 select from tab...
mysql limit分頁優化方法
mysql的優化是非常重要的。其他最常用也最需要優化的就是limit。mysql的limit給分頁帶來了極大的方便,但資料量一大的時候,limit的效能就急劇下降。同樣是取10條資料 select from yanxue8 visit limit 10000,10 和 select from yan...
mysql limit分頁查詢優化寫法
在mysql中進行分頁查詢時,一般會使用limit查詢,而且通常查詢中都會使用orderby排 序。但是在表資料量比較大的時候,例如查詢語句片段limit 10000,20,資料庫會讀取10020條資料,然後把前10000條丟棄,把最後的20條返回給你,這種消耗是可以避免的,也是沒必要的。下邊介紹幾...