最近在做的项目,有很多统计数据的地方,由于数据量相对较多,之前写的查询语句查询五十万条数据大概需要十秒左右的样子,严重影响了效率。后来在网上寻找解决方案,利用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` int(2) DEFAULT NULL

项目中需要统计某段时间内每天不同来源编号(CDE, SDE, PDE, CSE, SSE)的数量。原始SQL采用子查询方式,导致效率低下。通过在o_source和syctime_day字段上加索引和使用SUM与CASE...WHEN结合,将查询时间从分钟级降低到一秒,显著提升了查询效率。"
124294704,10385585,GAIA-IR:GraphScope中的并行图查询引擎,"['图数据库', '分布式计算', '查询引擎', '图查询语言', '并行查询']
最低0.47元/天 解锁文章
850

被折叠的 条评论
为什么被折叠?



