昨天幫同事優化了一個sql語句發出來共勉下: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' ) DESCcode |
執行計劃以下:blog
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
執行計劃部分我說的不是很清晰,有能夠描述清晰朋友能夠幫忙解釋下.table