MYSQL 行转列优化
程序员文章站
2024-03-19 12:13:22
...
背景:mysql里写了一个存储过程,需要把一个详情表里的某一列里的不同值转成列名,并取其他列的数据。
优化前:筛选详情表目标列每个值,然后和主表关联,目标列有6个不同值,关联6次,存储过程的执行时间是25s.
优化后:详情表分组,然后判断目标列的值把每个值都转列,执行时间0.5s,快了很多,具体sql语句是:
SELECT ID,
MAX(CASE KEY WHEN 'SD' THEN DATE_FORMAT(END_TIME_, '%Y-%m-%d') ELSE NULL END) AS SAD
FROM TABLE_NAME
GROUP BY ID
还有稍微复杂一点,判断多个值然后把这多个值转成一列,具体sql语句是:
SELECT ID,
MAX(CASE KEY WHEN 'OM' THEN ASSIGNEE
WHEN 'PM' THEN ASSIGNEE
WHEN 'TM' THEN ASSIGNEE ELSE NULL END) AS MO
FROM TABLE_NAME
GROUP BY ID
上一篇: 拓扑排序(代码理解)
下一篇: wnp