mysql sum case_MySQL巧用sum,case...when...优化统计查询

文章讲述了在处理大量数据的统计报表时,如何使用MySQL的SUM和CASE...WHEN...优化查询性能。原来采用子查询的方式导致效率低下,而通过在o_source和syctime_day字段上建立索引,并使用SUM和CASE...WHEN...结合,将多个子查询合并成一次全表扫描,大幅提高了查询速度。新SQL语句在处理五十多万条数据时,仅用一秒即可完成统计。
摘要由CSDN通过智能技术生成

最近在做项目,涉及到开发统计报表相关的任务,由于数据量相对较多,之前写的查询语句查询五十万条数据大概需要十秒左右的样子,后来经过老大的指点利用sum,case...when...重写SQL性能一下子提高到一秒钟就解决了。这里为了简洁明了的阐述问题和解决的方法,我简化一下需求模型。

现在数据库有一张订单表(经过简化的中间表),表结构如下:

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`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值