資料庫測試,掃瞄512.22k行,竟然13秒
這是由於大資料量排序導致的
在不改變表機構的情況下優化,優化查詢字段看看效果時候明顯
測試單查主鍵
select a.id from
table a
where a.itemno =
'1234332'
order
by a.createtime desc
limit0,
10
優化查詢字段效果明顯,優化後sql為
select a.id,a.name,..
.from
table a
right
join
(select a.id from
table
where a.itemno =
'1234332'
order
by a.createtime desc
limit0,
10) b on a.id = b.id
測試執行
和查詢id一樣,完美解決!
注意:這裡是right join ,使用inner join 會直接卡住
#查詢時間 0.024s
select a.id,a.name...
from
table a limit0,
10;#查詢資料頁碼較大時
select a.id,a.name...
from
table a limit
500000,10
#掃瞄行數較多,查詢時間較長 6.897s
#優化後
select a.id,a.name...
from
table a
where a.id >
(select id from
table a limit
500000,1
)limit
10#查詢時間 0.321s
#使用not exist
select a.id,a.name...
from
table a
where
notexists
(select b.tableid from usertable b
where b.userid =
'weasd'
and b.tableid = a.id)
limit
10
當上述問題重a表資料很大時,not exist 轉left join 優化#使用left join
select a.id,a.name...
from
table a left
join usertable b
on b.userid =
'weasd'
and b.tableid = a.id
where b.id is
null
limit
10
小表驅動大表,是關聯查詢常見的使用,當資料量達到幾十萬的時候也會慢
select b.image, b.video,..
.from t_small_table a
join t_big_table b on a.userid = b.userid and a.bigid = b.bigid
where a.createtime <
1615292025398
and a.userid in
('1234'
,'4567'
,'891011'
)order
by a.createtime desc
limit0,
10
上述sql 掃瞄行647.25k,執行時間為2.982s,雖然只返回了10行
優化後
select b.image, b.video,..
.(select userid,bigid from t_small_table
where createtime <
1615292025398
and userid in
('1234'
,'4567'
,'891011'
)order
by a.createtime desc
) a join t_big_table b on a.userid = b.userid and a.bigid = b.bigid
order
by a.createtime desc
limit0,
10
優化後查詢時間為0.046 MySQL優化 1億條資料效率COUNT
最近發現了乙個mysql快速匯入資料方法load data infile,具體參考這個文章。下面用幾條命令來給大家看看,效率結果。簡單說下 1.txt 開始只有10萬資料,後來用vim 新增到了2000萬行,用windows下的編輯器直接卡機的,windows下安裝gvim可以的。資料表型別inno...
SQL語句查詢倒數1 4條資料
查詢倒數1 4條資料 今天弄了半個小時才做出自己需要的效果 當然也可以查詢非倒數的1 4條資料 sql語句 1 不需要寫字段,直接根據表來查詢倒數資料 select from commoditytb order by commoditytb.commodityid desc limit 0,4 or...
優化mysql查詢最新一條資料
title 優化mysql查詢最新一條資料 date 2019 07 24 11 23 21 categories 今天寫web時,發現有個請求一直沒有響應,用谷歌f12看了一下,請求出現了乙個問題。我第一反應是網路延遲,又試了幾次,還是這個問題,便看了一下後台控制台也沒報錯,便想是不是sql查詢時...