上億條資料sql慢查詢優化,關聯查詢優化

2021-10-08 03:42:03 字數 2710 閱讀 1331

資料庫測試,掃瞄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查詢時...