昨天幫同事優化了乙個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...