mysql資料庫sql語句優化

2022-08-23 21:15:17 字數 1807 閱讀 5237

昨天幫同事優化了乙個sql語句發出來共勉下:

select

t.*,

(select

s.codename

from

sys_codelist s

where

s.codevalue = t.packagingtype

and s.kindcode = 'packaging'

) as packagingtypename,

s.codename as codename,

(select

picpath

from

zl_b_gd_pic

where

1 = 1

and gdid = t.gdid

limit 0,

1) as gdmainimagepath

from

zl_b_gd t

left join sys_codelist s on s.codevalue = t.levelcode

where

1 = 1

and t.gdmode <> '3'

and to_days(t.invaliddate) > to_days(now())

and t.gdstatus = '2'

and gdtype = '2'

order by

str_to_date(

gdpublishdate,

'%y-%m-%d %h:%i:%s'

) desc

主表1600條資料,codelist表4000+資料,當前查詢時間為2.33s.

select

t.*,

pg.codename as packagingtypename,

s.codename as codename,

(select

picpath

from

zl_b_gd_pic

where

1 = 1

and gdid = t.gdid

limit 0,

1) as gdmainimagepath

from

zl_b_gd t

left join (select * from sys_codelist where kindcode='corn_level') s on t.levelcode = s.codevalue

left join (select * from sys_codelist where kindcode = 'packaging') pg on t.packagingtype = pg.codevalue

where

1 = 1

and t.gdmode <> '3'

and to_days(t.invaliddate) > to_days(now())

and t.gdstatus = '2'

and gdtype = '2'

order by

str_to_date(

gdpublishdate,

'%y-%m-%d %h:%i:%s'

) desc

子查詢換成了關聯查詢,查詢時間為0.54s.

執行計畫如下:

執行計畫部分我說的不是很清晰,有可以描述清晰朋友可以幫忙解釋下.

資料庫優化 sql語句優化

1 group by語句優化 因為mysql對所有group by的字段進行排序,所以如果包含group by但是想要避免排序結果的消耗,可以指定order by null來進行group by的排序。select id,sun moneys from sales group by id expla...

資料庫 sql語句優化

寫操作 write 1 如果你同時從同一客戶插入很多行,使用多個值表的insert語句。這比使用分開insert語句快 在一些情況中幾倍 insert into test values 1,2 1,3 1,4 2 如果你從不同客戶插入很多行,能通過使用insert delayed語句得到更高的速度。...

MySQL資料庫SQL語句之優化INSERT語句

當進行資料insert 的時候,可以考慮採用以下幾種優化方式 如果同時從同一客戶插入很多行,應盡量使用多個值表的insert 語句,這種方式將大大縮減客戶端與資料庫之間的連線 關閉等消耗,使得效率比分開執行的單個insert 語句快 在大部分情況下,使用多個值表的insert 語句能比單個inser...