MySQL查询优化:取多列最大最小值的两种方法
创作时间:
作者:
@小白创作中心
MySQL查询优化:取多列最大最小值的两种方法
引用
CSDN
1.
https://blog.csdn.net/xjx891111/article/details/125217022
有个需求是这样的,每天有24个小时,对应24个列,要求:取一段时间内某个小时的最值,并按倒序排列。如下图所示:
首先假设 表名为t表,字段date,name,以及one、two、three。。。,代表每个小时,这里以3个列为例。
解决方法:
- 使用列转行,每一列都转为一行数据,这样,直接比值就可以了。
优点:比较常用,可以不用先求出每行或每列的最大值,转换后直接比值即可。
缺点:大量使用union,union越多,性能越差,在数据量大的情况下不推荐。
select name,max(val) from (
select name,one as val from t
union all
select name,two as val from t
union all
select name,three as val from t
) k group by name
order by val desc
limit 10
- 使用函数:greatest(求多列最大值),least (求多列最小值)
优点:可以一次性求出多列的最大值,性能也较高
select name, max(val) as vala from (
select name, greatest(one,two,three) as val from t
) k group by name
order by vala desc
limit 10
总结:
两种方式都可以完成任务,但是发现函数效率更好使,主要是两种方式使用场景不一样。行列转换在这种情况下就显得力不从心,所以,不同的场景要求推荐不同的写法。
本文原文来自CSDN
热门推荐
辟谣!关于新疆旅游的不实信息
2024年1-11月重庆市实现社会消费品零售总额1.44万亿元,同比增长3.8%
中国最美十大海岛
涩泽荣一登上新日元,背后有啥经济秘密?
新版日元发行:涩泽荣一的3D全息肖像与日本文化新诠释
揭秘日元防伪黑科技:全球首创3D全息图像让假币无处遁形
倍他乐克的作用
揭秘新学科专业:中国古典学“学什么”?
学习的葵花宝典——《错题本》
手办爱好者们,到底多能花钱?
马西卡:南京城市队的过客,却留下精彩瞬间
梅西保利成南京城市队胜负手!
面容ID不可用的原因及解决方法
2029年阿波菲斯小行星飞掠地球:撞击风险极低!
从阿波菲斯到2024 YR4:人类如何应对小行星撞击威胁
你也有过腹部跳动的焦虑时刻吗?
左小腹跳动?这些方法让你秒变舒坦!
冲脉调理:中医帮你解决腹部跳动感
肚子一跳一跳?可能是你的腹主动脉在“跳舞”
腹部跳动感:拉伸运动能缓解吗?
西游记中二郎神与孙悟空是何关系?有何变化?
佛教故事丨释迦牟尼佛的一生
这种清洗果蔬的方式,真没那么有效!最好的清洗方式是
最佳和最差的蔬菜营养排名
如何巧妙存储蔬菜?一文详解各类蔬菜的储存方法
青少年毒品滥用:如何有效预防?
大麻和阿片类药物:青少年心理健康的隐形杀手
阿片类药物滥用:社区健康的隐形杀手
秋冬养生:蘑菇料理大揭秘!
蘑菇中的营养密码:预防老年痴呆和增强免疫力的双重功效