【Mysql】分组取得最新值的相关SQL改写
来源:互联网 发布:mac os 10.12 beta5 编辑:程序博客网 时间:2024/05/22 11:54
最近项目上遇到个效率很差的SQL,通过沟通和整理,发现SQL中存在大量下面这种SQL的子查询:
(#获取**最新数据select security_id, trade_date, reliability, modified_duration, net_px, ytm, YEAR_TO_MAT from (select security_id, trade_date, reliability, modified_duration, net_px, ytm, YEAR_TO_MAT, rank from (select a.trade_date, a.security_id, a.reliability, a.modified_duration, a.net_px, a.ytm, a.YEAR_TO_MAT, @rownum := @rownum + 1, if(@security_id = a.security_id, @rank := @rank + 1, @rank := 1) as rank, @security_id := a.security_id from (select security_id, trade_date, reliability, modified_duration, net_px, ytm, YEAR_TO_MAT from **** where QA_ACTIVE_FLG = 1 order by trade_date desc, reliability desc) a, (select @rownum := 0, @security_id := null, @rank := 0) b) result) bb where bb.rank = 1)
所涉及的表会扫描两遍,后面给的给改写建议如下,不仅SQL逻辑简单清晰了,而且表只要scan一遍了。
#获取**最新数据 select security_id,max(trade_date) trade_date,max(reliability) reliability,substring_index(GROUP_CONCAT(modified_duration order by trade_date desc, reliability desc),',',1) modified_duration, substring_index(GROUP_CONCAT(net_px order by trade_date desc, reliability desc),',',1) net_px,substring_index(GROUP_CONCAT(ytm order by trade_date desc, reliability desc),',',1) ytm,substring_index(GROUP_CONCAT(YEAR_TO_MAT order by trade_date desc, reliability desc),',',1) YEAR_TO_MAT from *** where QA_ACTIVE_FLG = 1group by security_id/*###########################*/
供大家参考。
0 0
- 【Mysql】分组取得最新值的相关SQL改写
- Sql 分组后取得最新
- 查看mysql改写后的sql
- 分组取最新记录的SQL
- sql 分组取最新的数据
- mysql分组查询 查出最新的数据
- MYSQL取得最新插入ID
- MySql取得日期相关
- SQL-按照最新时间分组
- mysql分组查询最新数据
- sql如何分组选择显示最新的一条数据
- sql 按字段分组后取日期最新的一条
- MySQL分组后进行计算,计算后再取最新值或最旧值的超简捷写法
- mysql 分组取最新的一条记录(整条记录)
- mysql 分组取最新的一条记录(整条记录)
- mysql取出每个分组中最新的记录
- mysql取出每个分组中最新的记录
- MySQL按最新时间分组排序的实现
- MySQL中的几种类型理解
- 链表的增删改查
- hadoop mapreduce 调试(system.out.println log4j)
- 架构、框架和设计模式关系
- 游标和指针
- 【Mysql】分组取得最新值的相关SQL改写
- leetcode--Contains Duplicate II
- Dialog 中有EditText时,打开自动弹出软键盘,关闭时隐藏软键盘
- 贝塞尔曲线初探
- oracle的自带事务
- SpringMVC 异常处理
- Markdown使用手册
- 网站性能优化/数据库调优
- js运算符的优先级