婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MySQL巧用sum、case和when優(yōu)化統(tǒng)計查詢

MySQL巧用sum、case和when優(yōu)化統(tǒng)計查詢

熱門標簽:地圖標注費用是多少 曲靖移動外呼系統(tǒng)公司 武漢網(wǎng)絡(luò)外呼系統(tǒng)服務(wù)商 南昌三維地圖標注 外呼系統(tǒng)打電話上限是多少 電話外呼系統(tǒng)改號 怎樣在地圖標注銷售區(qū)域 啥是企業(yè)400電話辦理 百應(yīng)電話機器人優(yōu)勢

最近在公司做項目,涉及到開發(fā)統(tǒng)計報表相關(guān)的任務(wù),由于數(shù)據(jù)量相對較多,之前寫的查詢語句查詢五十萬條數(shù)據(jù)大概需要十秒左右的樣子,后來經(jīng)過老大的指點利用sum,case...when...重寫SQL性能一下子提高到一秒鐘就解決了。這里為了簡潔明了的闡述問題和解決的方法,我簡化一下需求模型。

現(xiàn)在數(shù)據(jù)庫有一張訂單表(經(jīng)過簡化的中間表),表結(jié)構(gòu)如下:

CREATE TABLE `statistic_order` (
 `oid` bigint(20) NOT NULL,
 `o_source` varchar(25) DEFAULT NULL COMMENT '來源編號',
 `o_actno` varchar(30) DEFAULT NULL COMMENT '活動編號',
 `o_actname` varchar(100) DEFAULT NULL COMMENT '參與活動名稱',
 `o_n_channel` int(2) DEFAULT NULL COMMENT '商城平臺',
 `o_clue` varchar(25) DEFAULT NULL COMMENT '線索分類',
 `o_star_level` varchar(25) DEFAULT NULL COMMENT '訂單星級',
 `o_saledep` varchar(30) DEFAULT NULL COMMENT '營銷部',
 `o_style` varchar(30) DEFAULT NULL COMMENT '車型',
 `o_status` int(2) DEFAULT NULL COMMENT '訂單狀態(tài)',
 `syctime_day` varchar(15) DEFAULT NULL COMMENT '按天格式化日期',
 PRIMARY KEY (`oid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

項目需求是這樣的:

統(tǒng)計某段時間范圍內(nèi)每天的來源編號數(shù)量,其中來源編號對應(yīng)數(shù)據(jù)表中的o_source字段,字段值可能為CDE,SDE,PDE,CSE,SSE。

來源分類隨時間流動

一開始寫了這樣一段SQL:

select S.syctime_day,
 (select count(*) from statistic_order SS where SS.syctime_day = S.syctime_day and SS.o_source = 'CDE') as 'CDE',
 (select count(*) from statistic_order SS where SS.syctime_day = S.syctime_day and SS.o_source = 'CDE') as 'SDE',
 (select count(*) from statistic_order SS where SS.syctime_day = S.syctime_day and SS.o_source = 'CDE') as 'PDE',
 (select count(*) from statistic_order SS where SS.syctime_day = S.syctime_day and SS.o_source = 'CDE') as 'CSE',
 (select count(*) from statistic_order SS where SS.syctime_day = S.syctime_day and SS.o_source = 'CDE') as 'SSE'
 from statistic_order S where S.syctime_day > '2016-05-01' and S.syctime_day  '2016-08-01' 
 GROUP BY S.syctime_day order by S.syctime_day asc;

這種寫法采用了子查詢的方式,在沒有加索引的情況下,55萬條數(shù)據(jù)執(zhí)行這句SQL,在workbench下等待了將近十分鐘,最后報了一個連接中斷,通過explain解釋器可以看到SQL的執(zhí)行計劃如下:

每一個查詢都進行了全表掃描,五個子查詢DEPENDENT SUBQUERY說明依賴于外部查詢,這種查詢機制是先進行外部查詢,查詢出group by后的日期結(jié)果,然后子查詢分別查詢對應(yīng)的日期中CDE,SDE等的數(shù)量,其效率可想而知。

在o_source和syctime_day上加上索引之后,效率提高了很多,大概五秒鐘就查詢出了結(jié)果:

查看執(zhí)行計劃發(fā)現(xiàn)掃描的行數(shù)減少了很多,不再進行全表掃描了:

這當然還不夠快,如果當數(shù)據(jù)量達到百萬級別的話,查詢速度肯定是不能容忍的。一直在想有沒有一種辦法,能否直接遍歷一次就查詢出所有的結(jié)果,類似于遍歷java中的list集合,遇到某個條件就計數(shù)一次,這樣進行一次全表掃描就可以查詢出結(jié)果集,結(jié)果索引,效率應(yīng)該會很高。在老大的指引下,利用sum聚合函數(shù),加上case...when...then...這種“陌生”的用法,有效的解決了這個問題。
具體SQL如下:

 select S.syctime_day,
 sum(case when S.o_source = 'CDE' then 1 else 0 end) as 'CDE',
 sum(case when S.o_source = 'SDE' then 1 else 0 end) as 'SDE',
 sum(case when S.o_source = 'PDE' then 1 else 0 end) as 'PDE',
 sum(case when S.o_source = 'CSE' then 1 else 0 end) as 'CSE',
 sum(case when S.o_source = 'SSE' then 1 else 0 end) as 'SSE'
 from statistic_order S where S.syctime_day > '2015-05-01' and S.syctime_day  '2016-08-01' 
 GROUP BY S.syctime_day order by S.syctime_day asc;

關(guān)于MySQL中case...when...then的用法就不做過多的解釋了,這條SQL很容易理解,先對一條一條記錄進行遍歷,group by對日期進行了分類,sum聚合函數(shù)對某個日期的值進行求和,重點就在于case...when...then對sum的求和巧妙的加入了條件,當o_source = 'CDE'的時候,計數(shù)為1,否則為0;當o_source='SDE'的時候......

這條語句的執(zhí)行只花了一秒多,對于五十多萬的數(shù)據(jù)進行這樣一個維度的統(tǒng)計還是比較理想的。

通過執(zhí)行計劃發(fā)現(xiàn),雖然掃描的行數(shù)變多了,但是只進行了一次全表掃描,而且是SIMPLE簡單查詢,所以執(zhí)行效率自然就高了:

針對這個問題,如果大家有更好的方案或思路,歡迎留言

總結(jié)

到此這篇關(guān)于MySQL巧用sum、case和when優(yōu)化統(tǒng)計查詢的文章就介紹到這了,更多相關(guān)MySQL優(yōu)化統(tǒng)計查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • SQL Server中使用判斷語句(IF ELSE/CASE WHEN )案例
  • 解決mybatis case when 報錯的問題
  • Oracle用decode函數(shù)或CASE-WHEN實現(xiàn)自定義排序
  • MySQL case when使用方法實例解析
  • 一篇文章帶你了解SQL之CASE WHEN用法詳解

標簽:甘南 荊州 吉林 黑河 隨州 錦州 滄州 資陽

巨人網(wǎng)絡(luò)通訊聲明:本文標題《MySQL巧用sum、case和when優(yōu)化統(tǒng)計查詢》,本文關(guān)鍵詞  MySQL,巧用,sum,case,和,when,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL巧用sum、case和when優(yōu)化統(tǒng)計查詢》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL巧用sum、case和when優(yōu)化統(tǒng)計查詢的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日本亚洲电影天堂| 欧美伊人久久大香线蕉综合69 | 激情伊人五月天久久综合| 欧美性一区二区| 亚洲一区二区三区四区在线观看| 欧洲激情一区二区| 水蜜桃久久夜色精品一区的特点 | 欧美精品1区2区3区| 日本免费新一区视频| 精品国产99国产精品| 国产91精品久久久久久久网曝门 | 久久久久国产成人精品亚洲午夜| 粉嫩aⅴ一区二区三区四区五区| 国产精品丝袜黑色高跟| 色婷婷av一区| 琪琪久久久久日韩精品| 国产欧美日韩综合精品一区二区| 成人ar影院免费观看视频| 亚洲一区二区三区四区在线观看| 日韩欧美一级特黄在线播放| 国产高清亚洲一区| 亚洲成人在线网站| 久久亚洲综合色| 欧洲中文字幕精品| 韩国三级在线一区| 亚洲视频精选在线| 日韩欧美在线1卡| 91丨porny丨户外露出| 老司机精品视频一区二区三区| 国产日韩三级在线| 制服丝袜成人动漫| 成人ar影院免费观看视频| 亚洲成a人片在线不卡一二三区 | 国产馆精品极品| 亚洲欧美日韩一区二区| 日韩欧美亚洲国产精品字幕久久久| 欧美日韩激情一区二区三区| 亚洲美腿欧美偷拍| 亚洲日本青草视频在线怡红院| 国产成人在线免费观看| 这里只有精品99re| 精品一区二区三区在线视频| 26uuu久久综合| 欧美日韩一区二区三区四区五区| 精彩视频一区二区| 五月天丁香久久| 国产亚洲一本大道中文在线| 欧美日韩成人一区| 成人视屏免费看| 国产麻豆91精品| 精品一区二区三区免费观看| 日本vs亚洲vs韩国一区三区二区| 亚洲一区二区偷拍精品| 日韩电影一二三区| 91蜜桃在线观看| 国产福利精品一区| 国内精品不卡在线| 美腿丝袜亚洲综合| 亚洲h精品动漫在线观看| 亚洲国产精品成人综合| 精品国产污污免费网站入口 | 国产精品午夜在线观看| 欧美午夜精品久久久久久孕妇| 成人激情视频网站| 国产一区二区三区在线观看精品| 美国三级日本三级久久99| 日韩高清不卡一区| 亚洲九九爱视频| 中文字幕在线不卡| 亚洲免费观看视频| 一区二区三区丝袜| 亚洲精品成人少妇| 一区二区三区日韩| 五月婷婷欧美视频| 午夜精品福利在线| 国产综合久久久久久久久久久久| 国产精品一区在线| 国产成人免费视频| 色又黄又爽网站www久久| 成人听书哪个软件好| 色婷婷狠狠综合| 884aa四虎影成人精品一区| 欧洲日韩一区二区三区| 欧美精品aⅴ在线视频| 久久亚洲免费视频| 国产精品蜜臀av| 亚洲综合成人在线| 免费成人结看片| 97久久精品人人做人人爽| 91原创在线视频| 91麻豆精品国产自产在线观看一区| 日韩一区二区三区在线视频| 精品99一区二区| 亚洲欧洲成人av每日更新| 爽好久久久欧美精品| 紧缚奴在线一区二区三区| av在线不卡电影| 欧美制服丝袜第一页| 日韩视频免费观看高清在线视频| 国产三级精品三级| 亚洲美女偷拍久久| 毛片不卡一区二区| 欧美图区在线视频| 久久久久久久久久久久久夜| 亚洲欧美一区二区三区久本道91| 日韩**一区毛片| 9久草视频在线视频精品| 日韩一区二区在线观看| 亚洲女爱视频在线| 春色校园综合激情亚洲| 欧美成人a∨高清免费观看| 亚洲最快最全在线视频| 成人激情午夜影院| 日韩写真欧美这视频| 亚洲综合丁香婷婷六月香| 99视频超级精品| 中文字幕免费一区| 久久激情五月婷婷| 欧美电影在线免费观看| 一区二区三区 在线观看视频| 国产精品系列在线观看| 欧美日韩一区高清| 亚洲乱码一区二区三区在线观看| 蜜桃av一区二区在线观看| 欧美日韩国产综合一区二区三区| 一区二区三区在线观看动漫| 国产美女一区二区三区| 欧美麻豆精品久久久久久| 亚洲一区日韩精品中文字幕| 国产精一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲韩国精品一区| 成人a免费在线看| 久久久精品国产免大香伊| 日韩国产欧美视频| 日韩欧美不卡一区| 秋霞电影一区二区| 欧美三级蜜桃2在线观看| 亚洲靠逼com| 在线观看一区日韩| 亚洲一本大道在线| 色天使久久综合网天天| 国产精品看片你懂得| 91在线精品秘密一区二区| 日本一区二区久久| 成人精品亚洲人成在线| 久久精品一二三| 国产盗摄女厕一区二区三区| 日韩一二三区不卡| 久久国产人妖系列| 欧美tickling挠脚心丨vk| 国产一区二区在线影院| 久久亚洲精华国产精华液| 麻豆精品在线观看| 久久久久久电影| 高清日韩电视剧大全免费| 中文字幕日本乱码精品影院| 99re亚洲国产精品| 亚洲激情综合网| 欧美亚洲国产一区二区三区| 另类小说欧美激情| 久久免费国产精品| 成人午夜精品一区二区三区| 最新国产精品久久精品| 在线精品视频小说1| 三级在线观看一区二区| 2023国产精品| 99国产精品久久久久久久久久久| 亚洲女人小视频在线观看| 欧美日韩五月天| 国产91丝袜在线18| 亚洲综合区在线| 精品国产亚洲在线| 91香蕉视频mp4| 日精品一区二区三区| 中文字幕av一区 二区| 欧美日韩成人激情| 丁香六月综合激情| 日本伊人午夜精品| 亚洲激情自拍视频| 久久久久9999亚洲精品| 欧美日韩在线播放三区| 国产精品一区二区在线观看网站| 亚洲精品久久7777| 欧美极品少妇xxxxⅹ高跟鞋| 欧美日韩国产乱码电影| 国产精品乡下勾搭老头1| 性欧美大战久久久久久久久| 91麻豆精品视频| 国内成人精品2018免费看| 亚洲精品高清在线| 国产无遮挡一区二区三区毛片日本| 色婷婷精品久久二区二区蜜臀av| 精品一区二区免费看| 亚洲精品成a人| 国产精品视频你懂的| 精品国产一二三| 欧美一区二区三区不卡| 欧美丝袜丝nylons| 91视频免费观看|