国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

group by 字段 count 中包含子查詢 優化 方式

2024-07-21 02:52:01
字體:
來源:轉載
供稿:網友

今天在工作中暴露一個問題,。提出優化方案。

原sql:

SELECT        batchno,        g.name goodsname,        '開通產品' opercontent,        date_format(str_to_date(t1.createtime,'%Y%m%d%H%i%s'),'%Y-%m-%d %H:%i:%s') createtime,        count(*) allcount,        (            SELECT            count(*)            FROM            be_channelbathorder t2            WHERE            t2.errcode in ('0000','2003')            AND t2.batchno = t1.batchno        )        succount,        (            SELECT            count(*)            FROM            be_channelbathorder t2            WHERE            t2.errcode not in ('0000','2003')            AND t2.batchno = t1.batchno        )        errcount,        status,        isNow        FROM

        be_channelbathorder t1,be_goods g

where 1=1 and t1.buycode=g.ID

GROUP BY        batchno,        t1.buycode,        t1.createtimeORDER BY t1.createtime DESC

在數據量小的時候無法察覺其查詢速度。當主表數據到達7萬時,發現此查詢速度及其慢至卡死。

上面經過測試,在紅色字體部分是導致查詢緩慢的最主要原因。經過查閱資料也未能找到合適方法,后來問了組內高端人士,得知,count() 函數中可以放入分組查詢的條件。

得知后,進行優化:

count(            case when t1.errcode='0000' OR t1.errcode='2003' then 1  else null end        )        succount,        count(            case when t1.errcode <> '0000' AND t1.errcode <> '2003' then 1  else null end        )        errcount,

優化sql以后,減少了不必要的二次自表查詢。用explain觀察也發現,前后兩者的確不同,速度有質的變化。

以下是兩個 explain的比較


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 重庆市| 峡江县| 天峻县| 沿河| 富蕴县| 新泰市| 叶城县| 福海县| 五家渠市| 淮南市| 台北县| 柞水县| 鄯善县| 宜君县| 琼海市| 郸城县| 平安县| 漠河县| 盐山县| 徐汇区| 女性| 苗栗市| 广灵县| 桂阳县| 科技| 凌云县| 嘉峪关市| 肃南| 吉隆县| 陇川县| 云南省| 荥经县| 泊头市| 宝清县| 新绛县| 旬阳县| 辽中县| 常德市| 朔州市| 西丰县| 乌兰察布市|