|
|
@@ -2,8 +2,9 @@
|
|
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
|
<mapper namespace="com.shkpr.service.customgateway.zhscada.mapper.scada.SensorCollectDataMapper">
|
|
|
<select id="findTimeRangeByCode" resultType="com.shkpr.service.customgateway.zhscada.domain.po.SensorCollectData">
|
|
|
- select min(coll_time) as min_time,
|
|
|
- max(coll_time) as max_time
|
|
|
+ select /*+ PARALLEL(8) */
|
|
|
+ min(coll_time) as min_time,
|
|
|
+ max(coll_time) as max_time
|
|
|
from ${schema}.t_sersor_coll_data_day
|
|
|
where sensor_code = #{code,jdbcType=VARCHAR}
|
|
|
</select>
|
|
|
@@ -11,23 +12,27 @@
|
|
|
<select id="findAlignByTimeAndCode" resultType="com.shkpr.service.customgateway.zhscada.domain.po.SensorCollectData"
|
|
|
fetchSize="3000">
|
|
|
with time_seq (start_time)
|
|
|
- as (select trunc(#{startTime,jdbcType=TIMESTAMP}, #{alignUnit,jdbcType=VARCHAR}) as start_time
|
|
|
+ as (select /*+ PARALLEL(8) */
|
|
|
+ trunc(#{startTime,jdbcType=TIMESTAMP}, #{alignUnit,jdbcType=VARCHAR}) as start_time
|
|
|
from dual
|
|
|
union all
|
|
|
- select start_time + numtodsinterval(#{interval,jdbcType=INTEGER}, #{intervalUnit,jdbcType=VARCHAR})
|
|
|
+ select /*+ PARALLEL(8) */
|
|
|
+ start_time + numtodsinterval(#{interval,jdbcType=INTEGER}, #{intervalUnit,jdbcType=VARCHAR})
|
|
|
from time_seq
|
|
|
where start_time +
|
|
|
numtodsinterval(#{interval,jdbcType=INTEGER}, #{intervalUnit,jdbcType=VARCHAR}) <
|
|
|
#{endTime,jdbcType=TIMESTAMP})
|
|
|
- select ts.start_time as time,
|
|
|
- sh.coll_value as value,
|
|
|
- sh.sensor_code as code
|
|
|
+ select /*+ PARALLEL(8) */
|
|
|
+ ts.start_time as time,
|
|
|
+ sh.coll_value as value,
|
|
|
+ sh.sensor_code as code
|
|
|
from time_seq ts
|
|
|
- left join (select sensor_code,
|
|
|
- coll_value,
|
|
|
- trunc(coll_time, #{alignUnit,jdbcType=VARCHAR}) as minute_trunc,
|
|
|
- row_number() over (partition by trunc(coll_time, #{alignUnit,jdbcType=VARCHAR}), sensor_code
|
|
|
- order by abs(coll_time - trunc(coll_time, #{alignUnit,jdbcType=VARCHAR}))) as rn
|
|
|
+ left join (select /*+ PARALLEL(8) */
|
|
|
+ sensor_code,
|
|
|
+ coll_value,
|
|
|
+ trunc(coll_time, #{alignUnit,jdbcType=VARCHAR}) as minute_trunc,
|
|
|
+ row_number() over (partition by trunc(coll_time, #{alignUnit,jdbcType=VARCHAR}), sensor_code
|
|
|
+ order by abs(coll_time - trunc(coll_time, #{alignUnit,jdbcType=VARCHAR}))) as rn
|
|
|
from ${schema}.t_sersor_coll_data_day
|
|
|
where sensor_code = #{code,jdbcType=VARCHAR}
|
|
|
and coll_time >= #{startTime,jdbcType=TIMESTAMP}
|