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)

相关推荐
uoKent18 小时前
MySQL常见命令梳理大纲
数据库·mysql
予枫的编程笔记18 小时前
【MySQL筑基篇】从排名统计到非结构化存储:MySQL窗口函数与JSON实战教程
mysql·数据处理·窗口函数·后端开发·json数据类型·数据库进阶·mysql高级特性
晚霞的不甘18 小时前
Flutter for OpenHarmony专注与习惯的完美融合: 打造你的高效生活助手
前端·数据库·经验分享·flutter·前端框架·生活
2301_7657031418 小时前
工具、测试与部署
jvm·数据库·python
山岚的运维笔记18 小时前
SQL Server笔记 -- 第13章:IF...ELSE
数据库·笔记·sql·microsoft·sqlserver
创客小邓19 小时前
Qt对SQLite数据库的操作
数据库·qt·sqlite
中二病码农不会遇见C++学姐19 小时前
《文明6》Mod开发实战:从游戏日志定位和解决Mod加载问题
数据库·游戏·oracle
naruto_lnq19 小时前
Python日志记录(Logging)最佳实践
jvm·数据库·python
YIN_尹19 小时前
【MySQL】数据分析双剑客:聚合函数 与 group by子句的完美搭配
mysql·性能优化·数据分析
酉鬼女又兒19 小时前
SQL23 统计每个学校各难度的用户平均刷题数
数据库·sql·算法