我觉得应该把数据预先关联起来,查询的时候能够自动的遍历。速度能得到比较明显的提升。
这种场景,就不适合数据库了,建议你用Neo4J,它专门是解决这种大量的关联的存储的。
建表的时候有建索引吗
select dt,CITY,AREA,cl,ml,zl,min(dt)over(partition by CITY,AREA) cdt,max(dt)over(partition by CITY,AREA) mdt ,
case when max(dt)over(partition by CITY,AREA)-min(dt)over(partition by CITY,AREA)=0 then cl end one_cl,
case when max(dt)over(partition by CITY,AREA)-min(dt)over(partition by CITY,AREA)=0 then ml end one_ml,
case when max(dt)over(partition by CITY,AREA)-min(dt)over(partition by CITY,AREA)>0 and min(dt)over(partition by CITY,AREA)=dt then cl end deff_cl,
case when max(dt)over(partition by CITY,AREA)-min(dt)over(partition by CITY,AREA)>0 and max(dt)over(partition by CITY,AREA)=dt then ml end deff_ml
from rk_test
1 2018-05-02 cc2 a21 50 100 50 2018-05-02 2018-05-02 50 100
2 2018-05-01 ccl a11 100 99 -1 2018-05-01 2018-05-03 100
3 2018-05-03 ccl a11 99 140 51 2018-05-01 2018-05-03 140
4 2018-05-02 ccl a12 200 205 5 2018-05-02 2018-05-02 200 205