mysql case when 不命中缓存

case when 在sql 中非常方便数据不同维度统计,但是也会出现mysql 索引不命中问题,当多个case 出现时,需要提取出来到where里面优化

优化后

SELECT
date(RecordTime) AS date,
count(
DISTINCT CASE
WHEN `Param` = '1' THEN
UserID
END
) AS 'h',
count(
DISTINCT CASE
WHEN `Param` = '2' THEN
UserID
END
) AS 's',
count(
DISTINCT CASE
WHEN `Param` = '4' THEN
UserID
END
) AS 'z'
FROM
user_prop_log_202310
WHERE
Category = '42'
GROUP BY
DATE(RecordTime)

优化前:

SELECT
date(RecordTime) AS date,
count(
DISTINCT CASE
WHEN `Category` = '42'
AND `Param` = '1' THEN
UserID
END
) AS 'h',
count(
DISTINCT CASE
WHEN `Category` = '42'
AND `Param` = '2' THEN
UserID
END
) AS 's',
count(
DISTINCT CASE
WHEN `Category` = '42'
AND `Param` = '4' THEN
UserID
END
) AS 'z'
FROM
user_prop_log_202310
GROUP BY
DATE(RecordTime)

相关推荐
呼拉拉呼拉2 分钟前
Redis知识体系
数据库·redis·缓存·知识体系
霖檬ing3 分钟前
Redis——主从&哨兵配置
数据库·redis·缓存
卜及中3 小时前
【Redis/2】核心特性、应用场景与安装配置
数据库·redis·缓存
LucianaiB3 小时前
如何做好一份优秀的技术文档:专业指南与最佳实践
android·java·数据库
Eiceblue4 小时前
Python读取PDF:文本、图片与文档属性
数据库·python·pdf
在未来等你6 小时前
SQL进阶之旅 Day 21:临时表与内存表应用
sql·mysql·postgresql·database·temporary-table·memory-table·sql-optimization
敖云岚6 小时前
【Redis】分布式锁的介绍与演进之路
数据库·redis·分布式
LUCIAZZZ7 小时前
HikariCP数据库连接池原理解析
java·jvm·数据库·spring·springboot·线程池·连接池
我在北京coding7 小时前
300道GaussDB(WMS)题目及答案。
数据库·gaussdb
小Tomkk7 小时前
阿里云 RDS mysql 5.7 怎么 添加白名单 并链接数据库
数据库·mysql·阿里云