本人没接触过数据库..刚来新公司也不久,都不知道怎么搜索相关问题只能发贴.问题是这样:现有一个log表记录订单各种状态与相应状态变更时间. 现在别处需要用到这里的几个时间.
因为日志表比较大批量查询可能就会影响性能.新建表嘛得在代码流程里都单独再记录时间点,有点多而且这几个时间只是现在需要用到,
别处暂时没需求,而查日志表又有效率问题
现在需要根据订单ID比较快的查询到其记录的各状态对应时间
能用视图解决吗? 可以的话应该sql应该怎么写?
比如说转成
id type1 type2 type3 ... typeN
123 状态1时间 状态2时间 ...
321 状态1时间 状态2时间 ...oracle视图
因为日志表比较大批量查询可能就会影响性能.新建表嘛得在代码流程里都单独再记录时间点,有点多而且这几个时间只是现在需要用到,
别处暂时没需求,而查日志表又有效率问题
现在需要根据订单ID比较快的查询到其记录的各状态对应时间
能用视图解决吗? 可以的话应该sql应该怎么写?
比如说转成
id type1 type2 type3 ... typeN
123 状态1时间 状态2时间 ...
321 状态1时间 状态2时间 ...oracle视图
相当于把上图中 MTRL_APPLY_ID 当作主键
(因为订单有多状态,日志随意加入,顺序不定也不是唯一的所以不能只是行列转下)
然后把几个订单状态转成列(名)对应状态变更时间.
select t.mtrl_apply_id,
WMSYS.WM_CONCAT(decode(t.busi_type, 10021001,to_char(t.op_date, 'yyyymmdd'),'')) a1,
WMSYS.WM_CONCAT(decode(t.busi_type, 10021002, t.op_date, '')) a2,
WMSYS.WM_CONCAT(decode(t.busi_type, 10021003, t.op_date, '')) a3,
WMSYS.WM_CONCAT(decode(t.busi_type, 10021004, t.op_date, '')) a4,
WMSYS.WM_CONCAT(decode(t.busi_type, 10021005, t.op_date, '')) a5
from zd.mtrl_apply_log t
group by t.mtrl_apply_id;这种方式的用视图还是会有效率问题. 最后还是新建了张表.不好意思没多久就决定建表了,忘记了帖子的事.