SQL Monitor Report trace_id query_sql RETURN_ROWS REQUEST_TIME REQUEST_END_TIME ELAPSED_TIME TENANT_NAME user_name db_name plan_id tenant_id mysql_version svr_ip svr_port params_value YB420A3D0CA2-0006422B90620C30-0-0 /* ApplicationName=DBeaver 25.2.4 - SQLEditor */ insert into dwd.dwd_obd_analyze SELECT /*+ PARALLEL(48) */ vin, send_time, speed, rpm, torque, fuelflow, lon, lat, odometer, -- 1. 计算速度变化率(加速度) speed - LAG(speed) OVER (PARTITION BY vin ORDER BY send_time) AS speed_change, -- 2. 计算连续数据点的时间间隔(秒) TIMESTAMPDIFF(SECOND, LAG(send_time) OVER (PARTITION BY vin ORDER BY send_time), send_time) AS time_interval_seconds, -- 3. 标记急加速事件 CASE WHEN (speed - LAG(speed) OVER (PARTITION BY vin ORDER BY send_time)) / GREATEST(TIMESTAMPDIFF(SECOND, LAG(send_time) OVER (PARTITION BY vin ORDER BY send_time), send_time), 1) > 10 THEN 1 ELSE 0 END AS rapid_acceleration, -- 4. 计算移动平均速度(最近5个点) AVG(speed) OVER ( PARTITION BY vin ORDER BY send_time ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) AS moving_avg_speed, -- 5. 计算累计油耗 SUM(fuelflow) OVER ( PARTITION BY vin ORDER BY send_time ) AS cumulative_fuel_consumption, -- 6. 按车辆和日期分区排名 RANK() OVER ( PARTITION BY vin, DATE(send_time) ORDER BY speed DESC ) AS daily_speed_rank, -- 7. 计算行驶时长(从第一个数据点开始) TIMESTAMPDIFF(MINUTE, FIRST_VALUE(send_time) OVER (PARTITION BY vin ORDER BY send_time), send_time) AS driving_duration_minutes, -- 8. 窗口内统计信息 MAX(speed) OVER ( PARTITION BY vin ORDER BY send_time ROWS BETWEEN 10 PRECEDING AND CURRENT ROW ) AS max_speed_last_10_points, AVG(rpm) OVER ( PARTITION BY vin ORDER BY send_time ROWS BETWEEN 10 PRECEDING AND CURRENT ROW ) AS avg_rpm_last_10_points, -- 9. 检测数据延迟异常 CASE WHEN TIMESTAMPDIFF(MINUTE, send_time, receive_time) > 60 THEN 1 ELSE 0 END AS data_delay_alert, -- 10. 计算速度百分位(按车辆分组) PERCENT_RANK() OVER ( PARTITION BY vin ORDER BY speed ) AS speed_percent_rank, -- 11. 计算与前值的里程差 odometer - LAG(odometer) OVER (PARTITION BY vin ORDER BY send_time) AS odometer_diff, -- 12. 标记高速行驶段(速度持续高于80) CASE WHEN speed > 80 AND LAG(speed) OVER (PARTITION BY vin ORDER BY send_time) > 80 AND LEAD(speed) OVER (PARTITION BY vin ORDER BY send_time) > 80 THEN 1 ELSE 0 END AS high_speed_section FROM ods.obd_data_ods WHERE speed IS NOT NULL AND rpm IS NOT NULL ORDER BY vin, send_time; 0 2025-11-19 09:34:30.921700 2025-11-19 12:08:55.616300 9264694666 dw_tenant root dwd 14578 1002 5.7.25-OceanBase_CE-v4.3.5.4 10.61.12.162 2882 explain extended /* ApplicationName=DBeaver 25.2.4 - SQLEditor */ insert into dwd.dwd_obd_analyze SELECT /*+ PARALLEL(48) */ vin, send_time, speed, rpm, torque, fuelflow, lon, lat, odometer, -- 1. 计算速度变化率(加速度) speed - LAG(speed) OVER (PARTITION BY vin ORDER BY send_time) AS speed_change, -- 2. 计算连续数据点的时间间隔(秒) TIMESTAMPDIFF(SECOND, LAG(send_time) OVER (PARTITION BY vin ORDER BY send_time), send_time) AS time_interval_seconds, -- 3. 标记急加速事件 CASE WHEN (speed - LAG(speed) OVER (PARTITION BY vin ORDER BY send_time)) / GREATEST(TIMESTAMPDIFF(SECOND, LAG(send_time) OVER (PARTITION BY vin ORDER BY send_time), send_time), 1) > 10 THEN 1 ELSE 0 END AS rapid_acceleration, -- 4. 计算移动平均速度(最近5个点) AVG(speed) OVER ( PARTITION BY vin ORDER BY send_time ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) AS moving_avg_speed, -- 5. 计算累计油耗 SUM(fuelflow) OVER ( PARTITION BY vin ORDER BY send_time ) AS cumulative_fuel_consumption, -- 6. 按车辆和日期分区排名 RANK() OVER ( PARTITION BY vin, DATE(send_time) ORDER BY speed DESC ) AS daily_speed_rank, -- 7. 计算行驶时长(从第一个数据点开始) TIMESTAMPDIFF(MINUTE, FIRST_VALUE(send_time) OVER (PARTITION BY vin ORDER BY send_time), send_time) AS driving_duration_minutes, -- 8. 窗口内统计信息 MAX(speed) OVER ( PARTITION BY vin ORDER BY send_time ROWS BETWEEN 10 PRECEDING AND CURRENT ROW ) AS max_speed_last_10_points, AVG(rpm) OVER ( PARTITION BY vin ORDER BY send_time ROWS BETWEEN 10 PRECEDING AND CURRENT ROW ) AS avg_rpm_last_10_points, -- 9. 检测数据延迟异常 CASE WHEN TIMESTAMPDIFF(MINUTE, send_time, receive_time) > 60 THEN 1 ELSE 0 END AS data_delay_alert, -- 10. 计算速度百分位(按车辆分组) PERCENT_RANK() OVER ( PARTITION BY vin ORDER BY speed ) AS speed_percent_rank, -- 11. 计算与前值的里程差 odometer - LAG(odometer) OVER (PARTITION BY vin ORDER BY send_time) AS odometer_diff, -- 12. 标记高速行驶段(速度持续高于80) CASE WHEN speed > 80 AND LAG(speed) OVER (PARTITION BY vin ORDER BY send_time) > 80 AND LEAD(speed) OVER (PARTITION BY vin ORDER BY send_time) > 80 THEN 1 ELSE 0 END AS high_speed_section FROM ods.obd_data_ods WHERE speed IS NOT NULL AND rpm IS NOT NULL ORDER BY vin, send_time; +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Query Plan | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ================================================================================================== | | |ID|OPERATOR |NAME |EST.ROWS |EST.TIME(us)| | | -------------------------------------------------------------------------------------------------- | | |0 |DISTRIBUTED INSERT | |335600000|4270450906 | | | |1 |└─SUBPLAN SCAN |ANONYMOUS_VIEW1|335600000|2145202007 | | | |2 | └─PX COORDINATOR MERGE SORT | |335600000|2144313700 | | | |3 | └─EXCHANGE OUT DISTR |:EX10002 |335600000|363517547 | | | |4 | └─SORT | |335600000|280006684 | | | |5 | └─WINDOW FUNCTION | |335600000|272147902 | | | |6 | └─SORT | |335600000|259750948 | | | |7 | └─WINDOW FUNCTION | |335600000|244901898 | | | |8 | └─PARTITION SORT | |335600000|187133269 | | | |9 | └─EXCHANGE IN DISTR | |335600000|178785513 | | | |10| └─EXCHANGE OUT DISTR (HASH) |:EX10001 |335600000|141685594 | | | |11| └─WINDOW FUNCTION | |335600000|58174730 | | | |12| └─PARTITION SORT | |335600000|50657668 | | | |13| └─EXCHANGE IN DISTR | |335600000|47137869 | | | |14| └─EXCHANGE OUT DISTR (HASH) |:EX10000 |335600000|33172521 | | | |15| └─PX BLOCK ITERATOR | |335600000|1751363 | | | |16| └─COLUMN TABLE FULL SCAN|obd_data_ods |335600000|1751363 | | | ================================================================================================== | | Outputs & filters: | | ------------------------------------- | | 0 - output(nil), filter(nil) | | columns([{dwd_obd_analyze: ({dwd_obd_analyze: (dwd_obd_analyze.__pk_increment(0x14f9e66dad70), dwd_obd_analyze.vin(0x14f9e662f430), dwd_obd_analyze.send_time(0x14f9e662f5d0), | | dwd_obd_analyze.speed(0x14f9e662f760), dwd_obd_analyze.rpm(0x14f9e662f8f0), dwd_obd_analyze.torque(0x14f9e662fa80), dwd_obd_analyze.fuelflow(0x14f9e662fc10), | | dwd_obd_analyze.lon(0x14f9e662fda0), dwd_obd_analyze.lat(0x14f9e662ff30), dwd_obd_analyze.odometer(0x14f9e66300c0), dwd_obd_analyze.speed_change(0x14f9e6630250), | | dwd_obd_analyze.time_interval_seconds(0x14f9e66303e0), dwd_obd_analyze.rapid_acceleration(0x14f9e6630570), dwd_obd_analyze.moving_avg_speed(0x14f9e6630700), | | dwd_obd_analyze.cumulative_fuel_consumption(0x14f9e6630890), dwd_obd_analyze.daily_speed_rank(0x14f9e6630a20), dwd_obd_analyze.driving_duration_minutes(0x14f9e6630bb0), | | dwd_obd_analyze.max_speed_last_10_points(0x14f9e6630d40), dwd_obd_analyze.avg_rpm_last_10_points(0x14f9e6632de0), dwd_obd_analyze.data_delay_alert(0x14f9e6632f70), | | dwd_obd_analyze.speed_percent_rank(0x14f9e6633100), dwd_obd_analyze.odometer_diff(0x14f9e6633290), dwd_obd_analyze.high_speed_section(0x14f9e6633420))})}]), | | partitions(p[0-31]), | | column_values([T_HIDDEN_PK(0x14f9e66ded20)], [column_conv(VARCHAR,utf8mb4_bin,length:64,NULL,ANONYMOUS_VIEW1.vin(0x14f9e66d8b10))(0x14f9e66dee90)], | | [column_conv(MYSQL_DATETIME,PS:(19,0),NULL,cast(ANONYMOUS_VIEW1.send_time(0x14f9e66d8ca0), MYSQL_DATETIME(-1, -1))(0x14f9e66e7e20))(0x14f9e66e3670)], [column_conv(DOUBLE, | | PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.speed(0x14f9e66d8e30), DOUBLE(-1, -1))(0x14f9e66ec9d0))(0x14f9e66e8220)], [column_conv(DOUBLE,PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.rpm(0x14f9e66d8fc0), | | DOUBLE(-1, -1))(0x14f9e66f1580))(0x14f9e66ecdd0)], [column_conv(DOUBLE,PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.torque(0x14f9e66d9150), DOUBLE(-1, -1))(0x14f9e66f6130))(0x14f9e66f1980)], | | [column_conv(DOUBLE,PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.fuelflow(0x14f9e66d92e0), DOUBLE(-1, -1))(0x14f9e66face0))(0x14f9e66f6530)], [column_conv(DOUBLE, | | PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.lon(0x14f9e66d9470), DOUBLE(-1, -1))(0x14f9e66ff890))(0x14f9e66fb0e0)], [column_conv(DOUBLE,PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.lat(0x14f9e66d9600), | | DOUBLE(-1, -1))(0x14f9e6704440))(0x14f9e66ffc90)], [column_conv(DOUBLE,PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.odometer(0x14f9e66d9790), DOUBLE(-1, -1))(0x14f9e6708ff0))(0x14f9e6704840)], | | [column_conv(DOUBLE,PS:(-1,-1),NULL,ANONYMOUS_VIEW1.speed_change(0x14f9e66d9920))(0x14f9e6709400)], [column_conv(INT,PS:(11,0),NULL,cast(ANONYMOUS_VIEW1.time_interval_seconds(0x14f9e66d9ab0), | | INT(-1, 0))(0x14f9e6714660))(0x14f9e670feb0)], [column_conv(TINYINT,PS:(4,0),NULL,cast(ANONYMOUS_VIEW1.rapid_acceleration(0x14f9e66d9c40), TINYINT(-1, | | 0))(0x14f9e6719220))(0x14f9e6714a70)], [column_conv(DOUBLE,PS:(-1,-1),NULL,ANONYMOUS_VIEW1.moving_avg_speed(0x14f9e66d9dd0))(0x14f9e6719630)], [column_conv(DOUBLE, | | PS:(-1,-1),NULL,ANONYMOUS_VIEW1.cumulative_fuel_consumption(0x14f9e66d9f60))(0x14f9e671de30)], [column_conv(INT,PS:(11,0),NULL,cast(ANONYMOUS_VIEW1.daily_speed_rank(0x14f9e66da0f0), | | INT(-1, 0))(0x14f9e6726dd0))(0x14f9e6722620)], [column_conv(INT,PS:(11,0),NULL,cast(ANONYMOUS_VIEW1.driving_duration_minutes(0x14f9e66da280), INT(-1, 0))(0x14f9e672b990))(0x14f9e67271e0)], | | [column_conv(DOUBLE,PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.max_speed_last_10_points(0x14f9e66da410), DOUBLE(-1, -1))(0x14f9e6730550))(0x14f9e672bda0)], [column_conv(DOUBLE, | | PS:(-1,-1),NULL,ANONYMOUS_VIEW1.avg_rpm_last_10_points(0x14f9e66da5a0))(0x14f9e6730960)], [column_conv(TINYINT,PS:(4,0),NULL,cast(ANONYMOUS_VIEW1.data_delay_alert(0x14f9e66da730), | | TINYINT(-1, 0))(0x14f9e6739900))(0x14f9e6735150)], [column_conv(DOUBLE,PS:(-1,-1),NULL,ANONYMOUS_VIEW1.speed_percent_rank(0x14f9e66da8c0))(0x14f9e6739d10)], | | [column_conv(DOUBLE,PS:(-1,-1),NULL,ANONYMOUS_VIEW1.odometer_diff(0x14f9e66daa50))(0x14f9e673e500)], [column_conv(TINYINT,PS:(4,0),NULL,cast(ANONYMOUS_VIEW1.high_speed_section(0x14f9e66dabe0), | | TINYINT(-1, 0))(0x14f9e67474a0))(0x14f9e6742cf0)]) | | 1 - output([ANONYMOUS_VIEW1.vin(0x14f9e66d8b10)], [ANONYMOUS_VIEW1.send_time(0x14f9e66d8ca0)], [ANONYMOUS_VIEW1.speed(0x14f9e66d8e30)], [ANONYMOUS_VIEW1.rpm(0x14f9e66d8fc0)], | | [ANONYMOUS_VIEW1.torque(0x14f9e66d9150)], [ANONYMOUS_VIEW1.fuelflow(0x14f9e66d92e0)], [ANONYMOUS_VIEW1.lon(0x14f9e66d9470)], [ANONYMOUS_VIEW1.lat(0x14f9e66d9600)], | | [ANONYMOUS_VIEW1.odometer(0x14f9e66d9790)], [ANONYMOUS_VIEW1.speed_change(0x14f9e66d9920)], [ANONYMOUS_VIEW1.time_interval_seconds(0x14f9e66d9ab0)], [ANONYMOUS_VIEW1.rapid_acceleration(0x14f9e66d9c40) | | ], [ANONYMOUS_VIEW1.moving_avg_speed(0x14f9e66d9dd0)], [ANONYMOUS_VIEW1.cumulative_fuel_consumption(0x14f9e66d9f60)], [ANONYMOUS_VIEW1.daily_speed_rank(0x14f9e66da0f0)], | | [ANONYMOUS_VIEW1.driving_duration_minutes(0x14f9e66da280)], [ANONYMOUS_VIEW1.max_speed_last_10_points(0x14f9e66da410)], [ANONYMOUS_VIEW1.avg_rpm_last_10_points(0x14f9e66da5a0)], | | [ANONYMOUS_VIEW1.data_delay_alert(0x14f9e66da730)], [ANONYMOUS_VIEW1.speed_percent_rank(0x14f9e66da8c0)], [ANONYMOUS_VIEW1.odometer_diff(0x14f9e66daa50)], | | [ANONYMOUS_VIEW1.high_speed_section(0x14f9e66dabe0)]), filter(nil), rowset=256 | | access([ANONYMOUS_VIEW1.vin(0x14f9e66d8b10)], [ANONYMOUS_VIEW1.send_time(0x14f9e66d8ca0)], [ANONYMOUS_VIEW1.speed(0x14f9e66d8e30)], [ANONYMOUS_VIEW1.rpm(0x14f9e66d8fc0)], | | [ANONYMOUS_VIEW1.torque(0x14f9e66d9150)], [ANONYMOUS_VIEW1.fuelflow(0x14f9e66d92e0)], [ANONYMOUS_VIEW1.lon(0x14f9e66d9470)], [ANONYMOUS_VIEW1.lat(0x14f9e66d9600)], | | [ANONYMOUS_VIEW1.odometer(0x14f9e66d9790)], [ANONYMOUS_VIEW1.speed_change(0x14f9e66d9920)], [ANONYMOUS_VIEW1.time_interval_seconds(0x14f9e66d9ab0)], [ANONYMOUS_VIEW1.rapid_acceleration(0x14f9e66d9c40) | | ], [ANONYMOUS_VIEW1.moving_avg_speed(0x14f9e66d9dd0)], [ANONYMOUS_VIEW1.cumulative_fuel_consumption(0x14f9e66d9f60)], [ANONYMOUS_VIEW1.daily_speed_rank(0x14f9e66da0f0)], | | [ANONYMOUS_VIEW1.driving_duration_minutes(0x14f9e66da280)], [ANONYMOUS_VIEW1.max_speed_last_10_points(0x14f9e66da410)], [ANONYMOUS_VIEW1.avg_rpm_last_10_points(0x14f9e66da5a0)], | | [ANONYMOUS_VIEW1.data_delay_alert(0x14f9e66da730)], [ANONYMOUS_VIEW1.speed_percent_rank(0x14f9e66da8c0)], [ANONYMOUS_VIEW1.odometer_diff(0x14f9e66daa50)], | | [ANONYMOUS_VIEW1.high_speed_section(0x14f9e66dabe0)]) | | 2 - output([obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], [obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [cast(obd_data_ods.speed(0x14f9e6664c20), DOUBLE(-1, -1))(0x14f9e66d0d50) - cast(T_WIN_FUN_LAG(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e6667320), | | DOUBLE(-1, -1))(0x14f9e66d1120)(0x14f9e666d880)], [timestampdiff(1, cast(T_WIN_FUN_LAG(obd_data_ods.send_time(0x14f9e6665bc0))(0x14f9e666dd90), DATETIME(-1, | | -1))(0x14f9e66d1660), cast(obd_data_ods.send_time(0x14f9e6665bc0), DATETIME(-1, -1))(0x14f9e66d1a60))(0x14f9e666dad0)], [CASE WHEN cast(obd_data_ods.speed(0x14f9e6664c20), | | DOUBLE(-1, -1))(0x14f9e66d2160) - cast(T_WIN_FUN_LAG(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e6667320), DOUBLE(-1, -1))(0x14f9e66d2530)(0x14f9e667b100) | | / cast(GREATEST(timestampdiff(1, cast(T_WIN_FUN_LAG(obd_data_ods.send_time(0x14f9e6665bc0))(0x14f9e666dd90), DATETIME(-1, -1))(0x14f9e66d2930), cast(obd_data_ods.send_time(0x14f9e6665bc0), | | DATETIME(-1, -1))(0x14f9e66d2d30))(0x14f9e667b3c0), 1(0x14f9e6681ea0))(0x14f9e667b250), DOUBLE(-1, -1))(0x14f9e66d3200)(0x14f9e66820d0) > cast(10(0x14f9e6682220), | | DOUBLE(-1, -1))(0x14f9e66d3820)(0x14f9e6682370) THEN 1(0x14f9e66824c0) ELSE 0(0x14f9e6682610) END(0x14f9e66746b0)], [cast(T_FUN_SUM(cast(obd_data_ods.speed(0x14f9e6664c20), | | DOUBLE(-1, -1))(0x14f9e6687550))(0x14f9e67a75c0)(0x14f9e67a8770) / cast(T_FUN_COUNT(cast(obd_data_ods.speed(0x14f9e6664c20), DOUBLE(-1, -1))(0x14f9e6687550))(0x14f9e67a7880)(0x14f9e67ac920), | | DOUBLE(-1, -1))(0x14f9e67a7e80)(0x14f9e67a7b40), DOUBLE(-1, -1))(0x14f9e67a82a0)], [T_FUN_SUM(cast(obd_data_ods.fuelflow(0x14f9e66665e0), DOUBLE(-1, -1))(0x14f9e668c300))(0x14f9e6687d30)(0x14f9e6687a4 | | 0)], [T_WIN_FUN_RANK()(0x14f9e668c7d0)], [timestampdiff(2, cast(T_WIN_FUN_NTH_VALUE(obd_data_ods.send_time(0x14f9e6665bc0),1)(0x14f9e6694200), DATETIME(-1, | | -1))(0x14f9e66d4740), cast(obd_data_ods.send_time(0x14f9e6665bc0), DATETIME(-1, -1))(0x14f9e66d4b50))(0x14f9e6693f40)], [T_FUN_MAX(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e669af90)(0x14f9e669aca0)], | | [cast(T_FUN_SUM(cast(obd_data_ods.rpm(0x14f9e6665390), DOUBLE(-1, -1))(0x14f9e66b1a80))(0x14f9e67b0ad0)(0x14f9e67b1c80) / cast(T_FUN_COUNT(cast(obd_data_ods.rpm(0x14f9e6665390), | | DOUBLE(-1, -1))(0x14f9e66b1a80))(0x14f9e67b0d90)(0x14f9e67b5e30), DOUBLE(-1, -1))(0x14f9e67b1390)(0x14f9e67b1050), DOUBLE(-1, -1))(0x14f9e67b17b0)], [CASE | | WHEN timestampdiff(2, cast(obd_data_ods.send_time(0x14f9e6665bc0), DATETIME(-1, -1))(0x14f9e66d5200), cast(obd_data_ods.receive_time(0x14f9e66b2f70), DATETIME(-1, | | -1))(0x14f9e66d55d0))(0x14f9e66b22b0) > 60(0x14f9e66b29b0)(0x14f9e66b2b00) THEN 1(0x14f9e66b2c50) ELSE 0(0x14f9e66b2da0) END(0x14f9e66b1f70)], [T_WIN_FUN_PERCENT_RANK()(0x14f9e66b3210)], | | [cast(obd_data_ods.odometer(0x14f9e6666fd0), DOUBLE(-1, -1))(0x14f9e66d5e90) - cast(T_WIN_FUN_LAG(obd_data_ods.odometer(0x14f9e6666fd0))(0x14f9e66b97b0), | | DOUBLE(-1, -1))(0x14f9e66d6260)(0x14f9e66bfd10)], [CASE WHEN (T_OP_AND, cast(obd_data_ods.speed(0x14f9e6664c20), DECIMAL(-1, -1))(0x14f9e66d6950) > cast(80(0x14f9e66c05a0), | | DECIMAL(20, 0))(0x14f9e66d6d20)(0x14f9e66c06f0), cast(T_WIN_FUN_LAG(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e6667320), DECIMAL(-1, -1))(0x14f9e66d71e0) | | > cast(80(0x14f9e66c6da0), DECIMAL(20, 0))(0x14f9e66d75e0)(0x14f9e66c6ef0), cast(T_WIN_FUN_LEAD(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e66c7040), DECIMAL(-1, | | -1))(0x14f9e66d7aa0) > cast(80(0x14f9e66cff60), DECIMAL(20, 0))(0x14f9e66d7ea0)(0x14f9e66d00b0))(0x14f9e66c02a0) THEN 1(0x14f9e66d0200) ELSE 0(0x14f9e66d0350) | | END(0x14f9e66bff60)]), filter(nil), rowset=256 | | sort_keys([obd_data_ods.vin(0x14f9e6665870), ASC], [obd_data_ods.send_time(0x14f9e6665bc0), ASC]) | | 3 - output([obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], [obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [T_WIN_FUN_LAG(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e6667320)], [T_WIN_FUN_LAG(obd_data_ods.send_time(0x14f9e6665bc0))(0x14f9e666dd90)], | | [T_FUN_SUM(cast(obd_data_ods.fuelflow(0x14f9e66665e0), DOUBLE(-1, -1))(0x14f9e668c300))(0x14f9e6687d30)(0x14f9e6687a40)], [T_WIN_FUN_RANK()(0x14f9e668c7d0)], | | [T_FUN_MAX(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e669af90)(0x14f9e669aca0)], [T_WIN_FUN_PERCENT_RANK()(0x14f9e66b3210)], [T_WIN_FUN_NTH_VALUE(obd_data_ods.send_time(0x14f9e6665bc0), | | 1)(0x14f9e6694200)], [T_WIN_FUN_LAG(obd_data_ods.odometer(0x14f9e6666fd0))(0x14f9e66b97b0)], [T_WIN_FUN_LEAD(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e66c7040)], | | [T_FUN_SUM(cast(obd_data_ods.speed(0x14f9e6664c20), DOUBLE(-1, -1))(0x14f9e6687550))(0x14f9e67a75c0)(0x14f9e67a8770)], [T_FUN_COUNT(cast(obd_data_ods.speed(0x14f9e6664c20), | | DOUBLE(-1, -1))(0x14f9e6687550))(0x14f9e67a7880)(0x14f9e67ac920)], [T_FUN_SUM(cast(obd_data_ods.rpm(0x14f9e6665390), DOUBLE(-1, -1))(0x14f9e66b1a80))(0x14f9e67b0ad0)(0x14f9e67b1c80)], | | [T_FUN_COUNT(cast(obd_data_ods.rpm(0x14f9e6665390), DOUBLE(-1, -1))(0x14f9e66b1a80))(0x14f9e67b0d90)(0x14f9e67b5e30)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), filter(nil), rowset=256 | | dop=48 | | 4 - output([obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], [obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [T_WIN_FUN_LAG(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e6667320)], [T_WIN_FUN_LAG(obd_data_ods.send_time(0x14f9e6665bc0))(0x14f9e666dd90)], | | [T_FUN_SUM(cast(obd_data_ods.fuelflow(0x14f9e66665e0), DOUBLE(-1, -1))(0x14f9e668c300))(0x14f9e6687d30)(0x14f9e6687a40)], [T_WIN_FUN_RANK()(0x14f9e668c7d0)], | | [T_FUN_MAX(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e669af90)(0x14f9e669aca0)], [T_WIN_FUN_PERCENT_RANK()(0x14f9e66b3210)], [T_WIN_FUN_NTH_VALUE(obd_data_ods.send_time(0x14f9e6665bc0), | | 1)(0x14f9e6694200)], [T_WIN_FUN_LAG(obd_data_ods.odometer(0x14f9e6666fd0))(0x14f9e66b97b0)], [T_WIN_FUN_LEAD(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e66c7040)], | | [T_FUN_SUM(cast(obd_data_ods.speed(0x14f9e6664c20), DOUBLE(-1, -1))(0x14f9e6687550))(0x14f9e67a75c0)(0x14f9e67a8770)], [T_FUN_COUNT(cast(obd_data_ods.speed(0x14f9e6664c20), | | DOUBLE(-1, -1))(0x14f9e6687550))(0x14f9e67a7880)(0x14f9e67ac920)], [T_FUN_SUM(cast(obd_data_ods.rpm(0x14f9e6665390), DOUBLE(-1, -1))(0x14f9e66b1a80))(0x14f9e67b0ad0)(0x14f9e67b1c80)], | | [T_FUN_COUNT(cast(obd_data_ods.rpm(0x14f9e6665390), DOUBLE(-1, -1))(0x14f9e66b1a80))(0x14f9e67b0d90)(0x14f9e67b5e30)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), filter(nil), rowset=256 | | sort_keys([obd_data_ods.vin(0x14f9e6665870), ASC], [obd_data_ods.send_time(0x14f9e6665bc0), ASC]), prefix_pos(1) | | 5 - output([obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], [obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [T_WIN_FUN_LAG(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e6667320)], [T_WIN_FUN_LAG(obd_data_ods.send_time(0x14f9e6665bc0))(0x14f9e666dd90)], | | [T_FUN_SUM(cast(obd_data_ods.fuelflow(0x14f9e66665e0), DOUBLE(-1, -1))(0x14f9e668c300))(0x14f9e6687d30)(0x14f9e6687a40)], [T_WIN_FUN_RANK()(0x14f9e668c7d0)], | | [T_FUN_MAX(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e669af90)(0x14f9e669aca0)], [T_WIN_FUN_PERCENT_RANK()(0x14f9e66b3210)], [T_WIN_FUN_NTH_VALUE(obd_data_ods.send_time(0x14f9e6665bc0), | | 1)(0x14f9e6694200)], [T_WIN_FUN_LAG(obd_data_ods.odometer(0x14f9e6666fd0))(0x14f9e66b97b0)], [T_WIN_FUN_LEAD(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e66c7040)], | | [T_FUN_SUM(cast(obd_data_ods.speed(0x14f9e6664c20), DOUBLE(-1, -1))(0x14f9e6687550))(0x14f9e67a75c0)(0x14f9e67a8770)], [T_FUN_COUNT(cast(obd_data_ods.speed(0x14f9e6664c20), | | DOUBLE(-1, -1))(0x14f9e6687550))(0x14f9e67a7880)(0x14f9e67ac920)], [T_FUN_SUM(cast(obd_data_ods.rpm(0x14f9e6665390), DOUBLE(-1, -1))(0x14f9e66b1a80))(0x14f9e67b0ad0)(0x14f9e67b1c80)], | | [T_FUN_COUNT(cast(obd_data_ods.rpm(0x14f9e6665390), DOUBLE(-1, -1))(0x14f9e66b1a80))(0x14f9e67b0d90)(0x14f9e67b5e30)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), filter(nil), rowset=256 | | win_expr(T_WIN_FUN_PERCENT_RANK()(0x14f9e66b3210)), partition_by([obd_data_ods.vin(0x14f9e6665870)]), order_by([obd_data_ods.speed(0x14f9e6664c20), | | ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(UNBOUNDED FOLLOWING) | | 6 - output([obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], [obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [T_WIN_FUN_LAG(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e6667320)], [T_WIN_FUN_LAG(obd_data_ods.send_time(0x14f9e6665bc0))(0x14f9e666dd90)], | | [T_FUN_SUM(cast(obd_data_ods.fuelflow(0x14f9e66665e0), DOUBLE(-1, -1))(0x14f9e668c300))(0x14f9e6687d30)(0x14f9e6687a40)], [T_WIN_FUN_RANK()(0x14f9e668c7d0)], | | [T_FUN_MAX(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e669af90)(0x14f9e669aca0)], [T_WIN_FUN_NTH_VALUE(obd_data_ods.send_time(0x14f9e6665bc0),1)(0x14f9e6694200)], | | [T_WIN_FUN_LAG(obd_data_ods.odometer(0x14f9e6666fd0))(0x14f9e66b97b0)], [T_WIN_FUN_LEAD(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e66c7040)], [T_FUN_SUM(cast(obd_data_ods.speed(0x14f9e6664c20), | | DOUBLE(-1, -1))(0x14f9e6687550))(0x14f9e67a75c0)(0x14f9e67a8770)], [T_FUN_COUNT(cast(obd_data_ods.speed(0x14f9e6664c20), DOUBLE(-1, -1))(0x14f9e6687550))(0x14f9e67a7880)(0x14f9e67ac920)], | | [T_FUN_SUM(cast(obd_data_ods.rpm(0x14f9e6665390), DOUBLE(-1, -1))(0x14f9e66b1a80))(0x14f9e67b0ad0)(0x14f9e67b1c80)], [T_FUN_COUNT(cast(obd_data_ods.rpm(0x14f9e6665390), | | DOUBLE(-1, -1))(0x14f9e66b1a80))(0x14f9e67b0d90)(0x14f9e67b5e30)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), filter(nil), rowset=256 | | sort_keys([obd_data_ods.vin(0x14f9e6665870), ASC], [obd_data_ods.speed(0x14f9e6664c20), ASC]) | | 7 - output([obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], [obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [T_WIN_FUN_LAG(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e6667320)], [T_WIN_FUN_LAG(obd_data_ods.send_time(0x14f9e6665bc0))(0x14f9e666dd90)], | | [T_FUN_SUM(cast(obd_data_ods.fuelflow(0x14f9e66665e0), DOUBLE(-1, -1))(0x14f9e668c300))(0x14f9e6687d30)(0x14f9e6687a40)], [T_WIN_FUN_RANK()(0x14f9e668c7d0)], | | [T_FUN_MAX(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e669af90)(0x14f9e669aca0)], [T_WIN_FUN_NTH_VALUE(obd_data_ods.send_time(0x14f9e6665bc0),1)(0x14f9e6694200)], | | [T_WIN_FUN_LAG(obd_data_ods.odometer(0x14f9e6666fd0))(0x14f9e66b97b0)], [T_WIN_FUN_LEAD(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e66c7040)], [T_FUN_SUM(cast(obd_data_ods.speed(0x14f9e6664c20), | | DOUBLE(-1, -1))(0x14f9e6687550))(0x14f9e67a75c0)(0x14f9e67a8770)], [T_FUN_COUNT(cast(obd_data_ods.speed(0x14f9e6664c20), DOUBLE(-1, -1))(0x14f9e6687550))(0x14f9e67a7880)(0x14f9e67ac920)], | | [T_FUN_SUM(cast(obd_data_ods.rpm(0x14f9e6665390), DOUBLE(-1, -1))(0x14f9e66b1a80))(0x14f9e67b0ad0)(0x14f9e67b1c80)], [T_FUN_COUNT(cast(obd_data_ods.rpm(0x14f9e6665390), | | DOUBLE(-1, -1))(0x14f9e66b1a80))(0x14f9e67b0d90)(0x14f9e67b5e30)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), filter(nil), rowset=256 | | win_expr(T_WIN_FUN_LAG(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e6667320)), partition_by([obd_data_ods.vin(0x14f9e6665870)]), order_by([obd_data_ods.send_time(0x14f9e6665bc0), | | ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(UNBOUNDED FOLLOWING) | | win_expr(T_WIN_FUN_LAG(obd_data_ods.send_time(0x14f9e6665bc0))(0x14f9e666dd90)), partition_by([obd_data_ods.vin(0x14f9e6665870)]), order_by([obd_data_ods.send_time(0x14f9e6665bc0), | | ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(UNBOUNDED FOLLOWING) | | win_expr(T_FUN_SUM(cast(obd_data_ods.fuelflow(0x14f9e66665e0), DOUBLE(-1, -1))(0x14f9e668c300))(0x14f9e6687d30)(0x14f9e6687a40)), partition_by([obd_data_ods.vin(0x14f9e6665870)]), | | order_by([obd_data_ods.send_time(0x14f9e6665bc0), ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(CURRENT ROW) | | win_expr(T_WIN_FUN_NTH_VALUE(obd_data_ods.send_time(0x14f9e6665bc0),1)(0x14f9e6694200)), partition_by([obd_data_ods.vin(0x14f9e6665870)]), order_by([obd_data_ods.send_time(0x14f9e6665bc0), | | ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(CURRENT ROW) | | win_expr(T_FUN_MAX(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e669af90)(0x14f9e669aca0)), partition_by([obd_data_ods.vin(0x14f9e6665870)]), order_by([obd_data_ods.send_time(0x14f9e6665bc0), | | ASC]), window_type(ROWS), upper(10(0x14f9e669b700) PRECEDING), lower(CURRENT ROW) | | win_expr(T_WIN_FUN_LAG(obd_data_ods.odometer(0x14f9e6666fd0))(0x14f9e66b97b0)), partition_by([obd_data_ods.vin(0x14f9e6665870)]), order_by([obd_data_ods.send_time(0x14f9e6665bc0), | | ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(UNBOUNDED FOLLOWING) | | win_expr(T_WIN_FUN_LEAD(obd_data_ods.speed(0x14f9e6664c20))(0x14f9e66c7040)), partition_by([obd_data_ods.vin(0x14f9e6665870)]), order_by([obd_data_ods.send_time(0x14f9e6665bc0), | | ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(UNBOUNDED FOLLOWING) | | win_expr(T_FUN_SUM(cast(obd_data_ods.speed(0x14f9e6664c20), DOUBLE(-1, -1))(0x14f9e6687550))(0x14f9e67a75c0)(0x14f9e67a8770)), partition_by([obd_data_ods.vin(0x14f9e6665870)]), | | order_by([obd_data_ods.send_time(0x14f9e6665bc0), ASC]), window_type(ROWS), upper(4(0x14f9e6683590) PRECEDING), lower(CURRENT ROW) | | win_expr(T_FUN_COUNT(cast(obd_data_ods.speed(0x14f9e6664c20), DOUBLE(-1, -1))(0x14f9e6687550))(0x14f9e67a7880)(0x14f9e67ac920)), partition_by([obd_data_ods.vin(0x14f9e6665870)]), | | order_by([obd_data_ods.send_time(0x14f9e6665bc0), ASC]), window_type(ROWS), upper(4(0x14f9e6683590) PRECEDING), lower(CURRENT ROW) | | win_expr(T_FUN_SUM(cast(obd_data_ods.rpm(0x14f9e6665390), DOUBLE(-1, -1))(0x14f9e66b1a80))(0x14f9e67b0ad0)(0x14f9e67b1c80)), partition_by([obd_data_ods.vin(0x14f9e6665870)]), | | order_by([obd_data_ods.send_time(0x14f9e6665bc0), ASC]), window_type(ROWS), upper(10(0x14f9e66adac0) PRECEDING), lower(CURRENT ROW) | | win_expr(T_FUN_COUNT(cast(obd_data_ods.rpm(0x14f9e6665390), DOUBLE(-1, -1))(0x14f9e66b1a80))(0x14f9e67b0d90)(0x14f9e67b5e30)), partition_by([obd_data_ods.vin(0x14f9e6665870)]), | | order_by([obd_data_ods.send_time(0x14f9e6665bc0), ASC]), window_type(ROWS), upper(10(0x14f9e66adac0) PRECEDING), lower(CURRENT ROW) | | 8 - output([obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], [obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [T_WIN_FUN_RANK()(0x14f9e668c7d0)], [cast(obd_data_ods.speed(0x14f9e6664c20), DOUBLE(-1, -1))(0x14f9e6687550)], | | [cast(obd_data_ods.rpm(0x14f9e6665390), DOUBLE(-1, -1))(0x14f9e66b1a80)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), filter(nil), rowset=256 | | sort_keys([HASH(obd_data_ods.vin(0x14f9e6665870))(0x14f83a6a3f40), ASC], [obd_data_ods.vin(0x14f9e6665870), ASC], [obd_data_ods.send_time(0x14f9e6665bc0), | | ASC]) | | 9 - output([obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], [obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [T_WIN_FUN_RANK()(0x14f9e668c7d0)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), filter(nil), rowset=256 | | 10 - output([obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], [obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [T_WIN_FUN_RANK()(0x14f9e668c7d0)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), filter(nil), rowset=256 | | (#keys=1, [obd_data_ods.vin(0x14f9e6665870), VARCHAR, 50]), dop=48 | | 11 - output([obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], [obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [T_WIN_FUN_RANK()(0x14f9e668c7d0)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), filter(nil), rowset=256 | | win_expr(T_WIN_FUN_RANK()(0x14f9e668c7d0)), partition_by([obd_data_ods.vin(0x14f9e6665870)], [date(cast(obd_data_ods.send_time(0x14f9e6665bc0), MYSQL_DATE(-1, | | -1))(0x14f9e66d4220))(0x14f9e668cc70)]), order_by([obd_data_ods.speed(0x14f9e6664c20), DESC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(UNBOUNDED | | FOLLOWING) | | 12 - output([obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], [obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [date(cast(obd_data_ods.send_time(0x14f9e6665bc0), MYSQL_DATE(-1, -1))(0x14f9e66d4220))(0x14f9e668cc70)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), filter(nil), rowset=256 | | sort_keys([HASH(obd_data_ods.vin(0x14f9e6665870), date(cast(obd_data_ods.send_time(0x14f9e6665bc0), MYSQL_DATE(-1, -1))(0x14f9e66d4220))(0x14f9e668cc70))(0x14f83a67d530), | | ASC], [obd_data_ods.vin(0x14f9e6665870), ASC], [date(cast(obd_data_ods.send_time(0x14f9e6665bc0), MYSQL_DATE(-1, -1))(0x14f9e66d4220))(0x14f9e668cc70), | | ASC], [obd_data_ods.speed(0x14f9e6664c20), DESC]) | | 13 - output([obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], [obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [date(cast(obd_data_ods.send_time(0x14f9e6665bc0), MYSQL_DATE(-1, -1))(0x14f9e66d4220))(0x14f9e668cc70)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), filter(nil), rowset=256 | | 14 - output([obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], [obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [date(cast(obd_data_ods.send_time(0x14f9e6665bc0), MYSQL_DATE(-1, -1))(0x14f9e66d4220))(0x14f9e668cc70)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), filter(nil), rowset=256 | | (#keys=2, [obd_data_ods.vin(0x14f9e6665870), VARCHAR, 50], [date(cast(obd_data_ods.send_time(0x14f9e6665bc0), MYSQL_DATE(-1, -1))(0x14f9e66d4220))(0x14f9e668cc70), | | MYSQL_DATE, -1]), dop=48 | | 15 - output([obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], [obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), filter(nil), rowset=256 | | 16 - output([obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], [obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), filter([obd_data_ods.speed(0x14f9e6664c20) IS NOT NULL(0x14f9e6664ab0)], | | [obd_data_ods.rpm(0x14f9e6665390) IS NOT NULL(0x14f9e6665220)]), rowset=256 | | access([obd_data_ods.speed(0x14f9e6664c20)], [obd_data_ods.rpm(0x14f9e6665390)], [obd_data_ods.vin(0x14f9e6665870)], [obd_data_ods.send_time(0x14f9e6665bc0)], | | [obd_data_ods.torque(0x14f9e6666290)], [obd_data_ods.fuelflow(0x14f9e66665e0)], [obd_data_ods.lon(0x14f9e6666930)], [obd_data_ods.lat(0x14f9e6666c80)], | | [obd_data_ods.odometer(0x14f9e6666fd0)], [obd_data_ods.receive_time(0x14f9e66b2f70)]), partitions(p0) | | is_index_back=false, is_global_index=false, scan_order=noorder, filter_before_indexback[false,false], | | range_key([obd_data_ods.__pk_increment(0x14f9e67a7430)]), range(MIN ; MAX)always true | | Used Hint: | | ------------------------------------- | | /*+ | | | | PARALLEL(48) | | */ | | Qb name trace: | | ------------------------------------- | | stmt_id:0, stmt_type:T_EXPLAIN | | stmt_id:1, INS$1 > INS$B2DE4D68 | | stmt_id:2, SEL$1 | | Outline Data: | | ------------------------------------- | | /*+ | | BEGIN_OUTLINE_DATA | | USE_DISTRIBUTED_DML(@"INS$B2DE4D68") | | PQ_DISTRIBUTE_WINDOW(@"SEL$1" (3) HASH PARTITION_SORT (0,1,2,4,5,7,8,9,10,11,12) HASH PARTITION_SORT (6) NONE) | | PARALLEL(@"SEL$1" "ods"."obd_data_ods"@"SEL$1" 48) | | FULL(@"SEL$1" "ods"."obd_data_ods"@"SEL$1") | | USE_COLUMN_TABLE(@"SEL$1" "ods"."obd_data_ods"@"SEL$1") | | PRED_DEDUCE(@"INS$1") | | PARALLEL(48) | | OPTIMIZER_FEATURES_ENABLE('4.3.5.4') | | END_OUTLINE_DATA | | */ | | Optimization Info: | | ------------------------------------- | | obd_data_ods: | | table_rows:34303390 | | physical_range_rows:335600000 | | logical_range_rows:335600000 | | output_rows:335600000 | | table_dop:48 | | dop_method:Global DOP | | avaiable_index_name:[obd_data_ods] | | stats info:[version=2025-11-17 22:00:37.734357, is_locked=0, is_expired=0] | | dynamic sampling level:0 | | estimation method:[OPTIMIZER STATISTICS, STORAGE] | | Plan Type: | | DISTRIBUTED | | Parameters: | | :0 => 1 | | :1 => 10 | | :2 => 1 | | :3 => 0 | | :4 => 4 | | :5 => 10 | | :6 => 10 | | :7 => 60 | | :8 => 1 | | :9 => 0 | | :10 => 80 | | :11 => 80 | | :12 => 80 | | :13 => 1 | | :14 => 0 | | Note: | | Degree of Parallelism is 48 because of hint | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ select * from oceanbase.gv$ob_plan_cache_plan_explain where tenant_id = 1002 and plan_id = 14578 and svr_ip = '10.61.12.162' and svr_port = 2882 +-----------+--------------+----------+---------+------------+--------------+-----------------------------------------+--------------+-----------+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | TENANT_ID | SVR_IP | SVR_PORT | PLAN_ID | PLAN_DEPTH | PLAN_LINE_ID | OPERATOR | NAME | ROWS | COST | PROPERTY | +-----------+--------------+----------+---------+------------+--------------+-----------------------------------------+--------------+-----------+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 1002 | 10.61.12.162 | 2882 | 14578 | 0 | 0 | PHY_INSERT | NULL | 335600000 | 4270450905 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 1 | 1 | PHY_VEC_SUBPLAN_SCAN | NULL | 335600000 | 2145202006 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 2 | 2 | PHY_VEC_PX_MERGE_SORT_COORD | NULL | 335600000 | 2144313699 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 3 | 3 | PHY_VEC_PX_REDUCE_TRANSMIT | NULL | 335600000 | 363517546 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 4 | 4 | PHY_VEC_SORT | NULL | 335600000 | 280006683 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 5 | 5 | PHY_VEC_WINDOW_FUNCTION | NULL | 335600000 | 272147901 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 6 | 6 | PHY_VEC_SORT | NULL | 335600000 | 259750947 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 7 | 7 | PHY_VEC_WINDOW_FUNCTION | NULL | 335600000 | 244901897 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 8 | 8 | PHY_VEC_SORT | NULL | 335600000 | 187133268 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 9 | 9 | PHY_VEC_PX_FIFO_RECEIVE | NULL | 335600000 | 178785512 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 10 | 10 | PHY_VEC_PX_DIST_TRANSMIT | NULL | 335600000 | 141685593 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 11 | 11 | PHY_VEC_WINDOW_FUNCTION | NULL | 335600000 | 58174729 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 12 | 12 | PHY_VEC_SORT | NULL | 335600000 | 50657667 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 13 | 13 | PHY_VEC_PX_FIFO_RECEIVE | NULL | 335600000 | 47137868 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 14 | 14 | PHY_VEC_PX_DIST_TRANSMIT | NULL | 335600000 | 33172520 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 15 | 15 | PHY_VEC_GRANULE_ITERATOR | NULL | 335600000 | 1751362 | NULL | | 1002 | 10.61.12.162 | 2882 | 14578 | 16 | 16 | PHY_VEC_TABLE_SCAN | obd_data_ods | 335600000 | 1751362 | table_rows:34303390, physical_range_rows:335600000, logical_range_rows:335600000, index_back_rows:0, output_rows:335600000, avaiable_index_name[obd_data_ods], estimation info[table_id:500163, (table_type:17, version:-1--1--1, logical_rc:335600000, physical_rc:335600000)] | +-----------+--------------+----------+---------+------------+--------------+-----------------------------------------+--------------+-----------+------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ obclient> SELECT DBMS_XPLAN.DISPLAY_CURSOR(14578, 'all', '10.61.12.162', 2882, 1002) FROM DUAL +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | DBMS_XPLAN.DISPLAY_CURSOR(14578, 'all', '10.61.12.162', 2882, 1002) | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | =================================================================================================================================================== | | |ID|OPERATOR |NAME |EST.ROWS |EST.TIME(us)|REAL.ROWS|REAL.TIME(us)|IO TIME(us)|CPU TIME(us)| | | --------------------------------------------------------------------------------------------------------------------------------------------------- | | |0 |DISTRIBUTED INSERT | |335600000|4270450906 |0 |0 |0 |0 | | | |1 |└─SUBPLAN SCAN |ANONYMOUS_VIEW1|335600000|2145202007 |0 |0 |0 |0 | | | |2 | └─PX COORDINATOR MERGE SORT | |335600000|2144313700 |0 |0 |0 |0 | | | |3 | └─EXCHANGE OUT DISTR |:EX10002 |335600000|363517547 |0 |0 |0 |0 | | | |4 | └─SORT | |335600000|280006684 |0 |0 |0 |0 | | | |5 | └─WINDOW FUNCTION | |335600000|272147902 |0 |0 |0 |0 | | | |6 | └─SORT | |335600000|259750948 |0 |0 |0 |0 | | | |7 | └─WINDOW FUNCTION | |335600000|244901898 |0 |0 |0 |0 | | | |8 | └─PARTITION SORT | |335600000|187133269 |0 |0 |0 |0 | | | |9 | └─EXCHANGE IN DISTR | |335600000|178785513 |0 |0 |0 |0 | | | |10| └─EXCHANGE OUT DISTR (HASH) |:EX10001 |335600000|141685594 |0 |0 |0 |0 | | | |11| └─WINDOW FUNCTION | |335600000|58174730 |0 |0 |0 |0 | | | |12| └─PARTITION SORT | |335600000|50657668 |0 |0 |0 |0 | | | |13| └─EXCHANGE IN DISTR | |335600000|47137869 |0 |0 |0 |0 | | | |14| └─EXCHANGE OUT DISTR (HASH) |:EX10000 |335600000|33172521 |0 |0 |0 |0 | | | |15| └─PX BLOCK ITERATOR | |335600000|1751363 |0 |0 |0 |0 | | | |16| └─COLUMN TABLE FULL SCAN|obd_data_ods |335600000|1751363 |0 |0 |0 |0 | | | =================================================================================================================================================== | | | | Outputs & filters: | | ------------------------------------- | | 0 - output(nil), filter(nil) | | columns([{dwd_obd_analyze: ({dwd_obd_analyze: (dwd_obd_analyze.__pk_increment, dwd_obd_analyze.vin, dwd_obd_analyze.send_time, dwd_obd_analyze.speed, | | dwd_obd_analyze.rpm, dwd_obd_analyze.torque, dwd_obd_analyze.fuelflow, dwd_obd_analyze.lon, dwd_obd_analyze.lat, dwd_obd_analyze.odometer, dwd_obd_analyze.speed_change, | | dwd_obd_analyze.time_interval_seconds, dwd_obd_analyze.rapid_acceleration, dwd_obd_analyze.moving_avg_speed, dwd_obd_analyze.cumulative_fuel_consumption, | | dwd_obd_analyze.daily_speed_rank, dwd_obd_analyze.driving_duration_minutes, dwd_obd_analyze.max_speed_last_10_points, dwd_obd_analyze.avg_rpm_last_10_points, | | dwd_obd_analyze.data_delay_alert, dwd_obd_analyze.speed_percent_rank, dwd_obd_analyze.odometer_diff, dwd_obd_analyze.high_speed_section)})}]), partitions(p[0-31]), | | | | column_values([T_HIDDEN_PK], [column_conv(VARCHAR,utf8mb4_bin,length:64,NULL,ANONYMOUS_VIEW1.vin)], [column_conv(MYSQL_DATETIME,PS:(19,0),NULL,cast(ANONYMOUS_VIEW1.send_time, | | MYSQL_DATETIME(-1, -1)))], [column_conv(DOUBLE,PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.speed, DOUBLE(-1, -1)))], [column_conv(DOUBLE,PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.rpm, | | DOUBLE(-1, -1)))], [column_conv(DOUBLE,PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.torque, DOUBLE(-1, -1)))], [column_conv(DOUBLE,PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.fuelflow, | | DOUBLE(-1, -1)))], [column_conv(DOUBLE,PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.lon, DOUBLE(-1, -1)))], [column_conv(DOUBLE,PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.lat, | | DOUBLE(-1, -1)))], [column_conv(DOUBLE,PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.odometer, DOUBLE(-1, -1)))], [column_conv(DOUBLE,PS:(-1,-1),NULL,ANONYMOUS_VIEW1.speed_change)], | | [column_conv(INT,PS:(11,0),NULL,cast(ANONYMOUS_VIEW1.time_interval_seconds, INT(-1, 0)))], [column_conv(TINYINT,PS:(4,0),NULL,cast(ANONYMOUS_VIEW1.rapid_acceleration, | | TINYINT(-1, 0)))], [column_conv(DOUBLE,PS:(-1,-1),NULL,ANONYMOUS_VIEW1.moving_avg_speed)], [column_conv(DOUBLE,PS:(-1,-1),NULL,ANONYMOUS_VIEW1.cumulative_fuel_consumption)], | | [column_conv(INT,PS:(11,0),NULL,cast(ANONYMOUS_VIEW1.daily_speed_rank, INT(-1, 0)))], [column_conv(INT,PS:(11,0),NULL,cast(ANONYMOUS_VIEW1.driving_duration_minutes, | | INT(-1, 0)))], [column_conv(DOUBLE,PS:(-1,-1),NULL,cast(ANONYMOUS_VIEW1.max_speed_last_10_points, DOUBLE(-1, -1)))], [column_conv(DOUBLE,PS:(-1,-1),NULL, | | ANONYMOUS_VIEW1.avg_rpm_last_10_points)], [column_conv(TINYINT,PS:(4,0),NULL,cast(ANONYMOUS_VIEW1.data_delay_alert, TINYINT(-1, 0)))], [column_conv(DOUBLE, | | PS:(-1,-1),NULL,ANONYMOUS_VIEW1.speed_percent_rank)], [column_conv(DOUBLE,PS:(-1,-1),NULL,ANONYMOUS_VIEW1.odometer_diff)], [column_conv(TINYINT,PS:(4,0), | | NULL,cast(ANONYMOUS_VIEW1.high_speed_section, TINYINT(-1, 0)))]) | | 1 - output([ANONYMOUS_VIEW1.vin], [ANONYMOUS_VIEW1.send_time], [ANONYMOUS_VIEW1.speed], [ANONYMOUS_VIEW1.rpm], [ANONYMOUS_VIEW1.torque], [ANONYMOUS_VIEW1.fuelflow], | | [ANONYMOUS_VIEW1.lon], [ANONYMOUS_VIEW1.lat], [ANONYMOUS_VIEW1.odometer], [ANONYMOUS_VIEW1.speed_change], [ANONYMOUS_VIEW1.time_interval_seconds], [ANONYMOUS_VIEW1.rapid_acceleration], | | [ANONYMOUS_VIEW1.moving_avg_speed], [ANONYMOUS_VIEW1.cumulative_fuel_consumption], [ANONYMOUS_VIEW1.daily_speed_rank], [ANONYMOUS_VIEW1.driving_duration_minutes], | | [ANONYMOUS_VIEW1.max_speed_last_10_points], [ANONYMOUS_VIEW1.avg_rpm_last_10_points], [ANONYMOUS_VIEW1.data_delay_alert], [ANONYMOUS_VIEW1.speed_percent_rank], | | [ANONYMOUS_VIEW1.odometer_diff], [ANONYMOUS_VIEW1.high_speed_section]), filter(nil), rowset=256 | | access([ANONYMOUS_VIEW1.vin], [ANONYMOUS_VIEW1.send_time], [ANONYMOUS_VIEW1.speed], [ANONYMOUS_VIEW1.rpm], [ANONYMOUS_VIEW1.torque], [ANONYMOUS_VIEW1.fuelflow], | | [ANONYMOUS_VIEW1.lon], [ANONYMOUS_VIEW1.lat], [ANONYMOUS_VIEW1.odometer], [ANONYMOUS_VIEW1.speed_change], [ANONYMOUS_VIEW1.time_interval_seconds], [ANONYMOUS_VIEW1.rapid_acceleration], | | [ANONYMOUS_VIEW1.moving_avg_speed], [ANONYMOUS_VIEW1.cumulative_fuel_consumption], [ANONYMOUS_VIEW1.daily_speed_rank], [ANONYMOUS_VIEW1.driving_duration_minutes], | | [ANONYMOUS_VIEW1.max_speed_last_10_points], [ANONYMOUS_VIEW1.avg_rpm_last_10_points], [ANONYMOUS_VIEW1.data_delay_alert], [ANONYMOUS_VIEW1.speed_percent_rank], | | [ANONYMOUS_VIEW1.odometer_diff], [ANONYMOUS_VIEW1.high_speed_section]) | | 2 - output([obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [cast(obd_data_ods.speed, DOUBLE(-1, -1)) - cast(T_WIN_FUN_LAG(obd_data_ods.speed), DOUBLE(-1, -1))], [timestampdiff(1, | | cast(T_WIN_FUN_LAG(obd_data_ods.send_time), DATETIME(-1, -1)), cast(obd_data_ods.send_time, DATETIME(-1, -1)))], [CASE WHEN cast(obd_data_ods.speed, DOUBLE(-1, | | -1)) - cast(T_WIN_FUN_LAG(obd_data_ods.speed), DOUBLE(-1, -1)) / cast(GREATEST(timestampdiff(1, cast(T_WIN_FUN_LAG(obd_data_ods.send_time), DATETIME(-1, | | -1)), cast(obd_data_ods.send_time, DATETIME(-1, -1))), 1), DOUBLE(-1, -1)) > cast(10, DOUBLE(-1, -1)) THEN 1 ELSE 0 END], [cast(T_FUN_SUM(cast(obd_data_ods.speed, | | DOUBLE(-1, -1))) / cast(T_FUN_COUNT(cast(obd_data_ods.speed, DOUBLE(-1, -1))), DOUBLE(-1, -1)), DOUBLE(-1, -1))], [T_FUN_SUM(cast(obd_data_ods.fuelflow, | | DOUBLE(-1, -1)))], [T_WIN_FUN_RANK()], [timestampdiff(2, cast(T_WIN_FUN_NTH_VALUE(obd_data_ods.send_time,1), DATETIME(-1, -1)), cast(obd_data_ods.send_time, | | DATETIME(-1, -1)))], [T_FUN_MAX(obd_data_ods.speed)], [cast(T_FUN_SUM(cast(obd_data_ods.rpm, DOUBLE(-1, -1))) / cast(T_FUN_COUNT(cast(obd_data_ods.rpm, | | DOUBLE(-1, -1))), DOUBLE(-1, -1)), DOUBLE(-1, -1))], [CASE WHEN timestampdiff(2, cast(obd_data_ods.send_time, DATETIME(-1, -1)), cast(obd_data_ods.receive_time, | | DATETIME(-1, -1))) > 60 THEN 1 ELSE 0 END], [T_WIN_FUN_PERCENT_RANK()], [cast(obd_data_ods.odometer, DOUBLE(-1, -1)) - cast(T_WIN_FUN_LAG(obd_data_ods.odometer), | | DOUBLE(-1, -1))], [CASE WHEN (T_OP_AND, cast(obd_data_ods.speed, DECIMAL(-1, -1)) > cast(80, DECIMAL(20, 0)), cast(T_WIN_FUN_LAG(obd_data_ods.speed), DECIMAL(-1, | | -1)) > cast(80, DECIMAL(20, 0)), cast(T_WIN_FUN_LEAD(obd_data_ods.speed), DECIMAL(-1, -1)) > cast(80, DECIMAL(20, 0))) THEN 1 ELSE 0 END]), filter(nil), rowset=256 | | sort_keys([obd_data_ods.vin, ASC], [obd_data_ods.send_time, ASC]) | | 3 - output([obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [T_WIN_FUN_LAG(obd_data_ods.speed)], [T_WIN_FUN_LAG(obd_data_ods.send_time)], [T_FUN_SUM(cast(obd_data_ods.fuelflow, | | DOUBLE(-1, -1)))], [T_WIN_FUN_RANK()], [T_FUN_MAX(obd_data_ods.speed)], [T_WIN_FUN_PERCENT_RANK()], [T_WIN_FUN_NTH_VALUE(obd_data_ods.send_time,1)], [T_WIN_FUN_LAG(obd_data_ods.odometer)], | | [T_WIN_FUN_LEAD(obd_data_ods.speed)], [T_FUN_SUM(cast(obd_data_ods.speed, DOUBLE(-1, -1)))], [T_FUN_COUNT(cast(obd_data_ods.speed, DOUBLE(-1, -1)))], [T_FUN_SUM(cast(obd_data_ods.rpm, | | DOUBLE(-1, -1)))], [T_FUN_COUNT(cast(obd_data_ods.rpm, DOUBLE(-1, -1)))], [obd_data_ods.receive_time]), filter(nil), rowset=256 | | dop=48 | | 4 - output([obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [T_WIN_FUN_LAG(obd_data_ods.speed)], [T_WIN_FUN_LAG(obd_data_ods.send_time)], [T_FUN_SUM(cast(obd_data_ods.fuelflow, | | DOUBLE(-1, -1)))], [T_WIN_FUN_RANK()], [T_FUN_MAX(obd_data_ods.speed)], [T_WIN_FUN_PERCENT_RANK()], [T_WIN_FUN_NTH_VALUE(obd_data_ods.send_time,1)], [T_WIN_FUN_LAG(obd_data_ods.odometer)], | | [T_WIN_FUN_LEAD(obd_data_ods.speed)], [T_FUN_SUM(cast(obd_data_ods.speed, DOUBLE(-1, -1)))], [T_FUN_COUNT(cast(obd_data_ods.speed, DOUBLE(-1, -1)))], [T_FUN_SUM(cast(obd_data_ods.rpm, | | DOUBLE(-1, -1)))], [T_FUN_COUNT(cast(obd_data_ods.rpm, DOUBLE(-1, -1)))], [obd_data_ods.receive_time]), filter(nil), rowset=256 | | sort_keys([obd_data_ods.vin, ASC], [obd_data_ods.send_time, ASC]), prefix_pos(1) | | 5 - output([obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [T_WIN_FUN_LAG(obd_data_ods.speed)], [T_WIN_FUN_LAG(obd_data_ods.send_time)], [T_FUN_SUM(cast(obd_data_ods.fuelflow, | | DOUBLE(-1, -1)))], [T_WIN_FUN_RANK()], [T_FUN_MAX(obd_data_ods.speed)], [T_WIN_FUN_PERCENT_RANK()], [T_WIN_FUN_NTH_VALUE(obd_data_ods.send_time,1)], [T_WIN_FUN_LAG(obd_data_ods.odometer)], | | [T_WIN_FUN_LEAD(obd_data_ods.speed)], [T_FUN_SUM(cast(obd_data_ods.speed, DOUBLE(-1, -1)))], [T_FUN_COUNT(cast(obd_data_ods.speed, DOUBLE(-1, -1)))], [T_FUN_SUM(cast(obd_data_ods.rpm, | | DOUBLE(-1, -1)))], [T_FUN_COUNT(cast(obd_data_ods.rpm, DOUBLE(-1, -1)))], [obd_data_ods.receive_time]), filter(nil), rowset=256 | | win_expr(T_WIN_FUN_PERCENT_RANK()), partition_by([obd_data_ods.vin]), order_by([obd_data_ods.speed, ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), | | lower(UNBOUNDED FOLLOWING) | | 6 - output([obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [T_WIN_FUN_LAG(obd_data_ods.speed)], [T_WIN_FUN_LAG(obd_data_ods.send_time)], [T_FUN_SUM(cast(obd_data_ods.fuelflow, | | DOUBLE(-1, -1)))], [T_WIN_FUN_RANK()], [T_FUN_MAX(obd_data_ods.speed)], [T_WIN_FUN_NTH_VALUE(obd_data_ods.send_time,1)], [T_WIN_FUN_LAG(obd_data_ods.odometer)], | | [T_WIN_FUN_LEAD(obd_data_ods.speed)], [T_FUN_SUM(cast(obd_data_ods.speed, DOUBLE(-1, -1)))], [T_FUN_COUNT(cast(obd_data_ods.speed, DOUBLE(-1, -1)))], [T_FUN_SUM(cast(obd_data_ods.rpm, | | DOUBLE(-1, -1)))], [T_FUN_COUNT(cast(obd_data_ods.rpm, DOUBLE(-1, -1)))], [obd_data_ods.receive_time]), filter(nil), rowset=256 | | sort_keys([obd_data_ods.vin, ASC], [obd_data_ods.speed, ASC]) | | 7 - output([obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [T_WIN_FUN_LAG(obd_data_ods.speed)], [T_WIN_FUN_LAG(obd_data_ods.send_time)], [T_FUN_SUM(cast(obd_data_ods.fuelflow, | | DOUBLE(-1, -1)))], [T_WIN_FUN_RANK()], [T_FUN_MAX(obd_data_ods.speed)], [T_WIN_FUN_NTH_VALUE(obd_data_ods.send_time,1)], [T_WIN_FUN_LAG(obd_data_ods.odometer)], | | [T_WIN_FUN_LEAD(obd_data_ods.speed)], [T_FUN_SUM(cast(obd_data_ods.speed, DOUBLE(-1, -1)))], [T_FUN_COUNT(cast(obd_data_ods.speed, DOUBLE(-1, -1)))], [T_FUN_SUM(cast(obd_data_ods.rpm, | | DOUBLE(-1, -1)))], [T_FUN_COUNT(cast(obd_data_ods.rpm, DOUBLE(-1, -1)))], [obd_data_ods.receive_time]), filter(nil), rowset=256 | | win_expr(T_WIN_FUN_LAG(obd_data_ods.speed)), partition_by([obd_data_ods.vin]), order_by([obd_data_ods.send_time, ASC]), window_type(RANGE), upper(UNBOUNDED | | PRECEDING), lower(UNBOUNDED FOLLOWING) | | win_expr(T_WIN_FUN_LAG(obd_data_ods.send_time)), partition_by([obd_data_ods.vin]), order_by([obd_data_ods.send_time, ASC]), window_type(RANGE), upper(UNBOUNDED | | PRECEDING), lower(UNBOUNDED FOLLOWING) | | win_expr(T_FUN_SUM(cast(obd_data_ods.fuelflow, DOUBLE(-1, -1)))), partition_by([obd_data_ods.vin]), order_by([obd_data_ods.send_time, ASC]), window_type(RANGE), | | upper(UNBOUNDED PRECEDING), lower(CURRENT ROW) | | win_expr(T_WIN_FUN_NTH_VALUE(obd_data_ods.send_time,1)), partition_by([obd_data_ods.vin]), order_by([obd_data_ods.send_time, ASC]), window_type(RANGE), | | upper(UNBOUNDED PRECEDING), lower(CURRENT ROW) | | win_expr(T_FUN_MAX(obd_data_ods.speed)), partition_by([obd_data_ods.vin]), order_by([obd_data_ods.send_time, ASC]), window_type(ROWS), upper(10 PRECEDING), | | lower(CURRENT ROW) | | win_expr(T_WIN_FUN_LAG(obd_data_ods.odometer)), partition_by([obd_data_ods.vin]), order_by([obd_data_ods.send_time, ASC]), window_type(RANGE), upper(UNBOUNDED | | PRECEDING), lower(UNBOUNDED FOLLOWING) | | win_expr(T_WIN_FUN_LEAD(obd_data_ods.speed)), partition_by([obd_data_ods.vin]), order_by([obd_data_ods.send_time, ASC]), window_type(RANGE), upper(UNBOUNDED | | PRECEDING), lower(UNBOUNDED FOLLOWING) | | win_expr(T_FUN_SUM(cast(obd_data_ods.speed, DOUBLE(-1, -1)))), partition_by([obd_data_ods.vin]), order_by([obd_data_ods.send_time, ASC]), window_type(ROWS), | | upper(4 PRECEDING), lower(CURRENT ROW) | | win_expr(T_FUN_COUNT(cast(obd_data_ods.speed, DOUBLE(-1, -1)))), partition_by([obd_data_ods.vin]), order_by([obd_data_ods.send_time, ASC]), window_type(ROWS), | | upper(4 PRECEDING), lower(CURRENT ROW) | | win_expr(T_FUN_SUM(cast(obd_data_ods.rpm, DOUBLE(-1, -1)))), partition_by([obd_data_ods.vin]), order_by([obd_data_ods.send_time, ASC]), window_type(ROWS), | | upper(10 PRECEDING), lower(CURRENT ROW) | | win_expr(T_FUN_COUNT(cast(obd_data_ods.rpm, DOUBLE(-1, -1)))), partition_by([obd_data_ods.vin]), order_by([obd_data_ods.send_time, ASC]), window_type(ROWS), | | upper(10 PRECEDING), lower(CURRENT ROW) | | 8 - output([obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [T_WIN_FUN_RANK()], [cast(obd_data_ods.speed, DOUBLE(-1, -1))], [cast(obd_data_ods.rpm, DOUBLE(-1, -1))], | | [obd_data_ods.receive_time]), filter(nil), rowset=256 | | sort_keys([HASH(obd_data_ods.vin), ASC], [obd_data_ods.vin, ASC], [obd_data_ods.send_time, ASC]) | | 9 - output([obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [T_WIN_FUN_RANK()], [obd_data_ods.receive_time]), filter(nil), rowset=256 | | 10 - output([obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [T_WIN_FUN_RANK()], [obd_data_ods.receive_time]), filter(nil), rowset=256 | | (#keys=1, [obd_data_ods.vin]), dop=48 | | 11 - output([obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [T_WIN_FUN_RANK()], [obd_data_ods.receive_time]), filter(nil), rowset=256 | | win_expr(T_WIN_FUN_RANK()), partition_by([obd_data_ods.vin], [date(cast(obd_data_ods.send_time, MYSQL_DATE(-1, -1)))]), order_by([obd_data_ods.speed, | | DESC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(UNBOUNDED FOLLOWING) | | 12 - output([obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [date(cast(obd_data_ods.send_time, MYSQL_DATE(-1, -1)))], [obd_data_ods.receive_time]), filter(nil), rowset=256 | | sort_keys([HASH(obd_data_ods.vin, date(cast(obd_data_ods.send_time, MYSQL_DATE(-1, -1)))), ASC], [obd_data_ods.vin, ASC], [date(cast(obd_data_ods.send_time, | | MYSQL_DATE(-1, -1))), ASC], [obd_data_ods.speed, DESC]) | | 13 - output([obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [date(cast(obd_data_ods.send_time, MYSQL_DATE(-1, -1)))], [obd_data_ods.receive_time]), filter(nil), rowset=256 | | 14 - output([obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [date(cast(obd_data_ods.send_time, MYSQL_DATE(-1, -1)))], [obd_data_ods.receive_time]), filter(nil), rowset=256 | | (#keys=2, [obd_data_ods.vin], [date(cast(obd_data_ods.send_time, MYSQL_DATE(-1, -1)))]), dop=48 | | 15 - output([obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [obd_data_ods.receive_time]), filter(nil), rowset=256 | | 16 - output([obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [obd_data_ods.receive_time]), filter([obd_data_ods.speed IS NOT NULL], [obd_data_ods.rpm IS NOT NULL]), rowset=256 | | access([obd_data_ods.speed], [obd_data_ods.rpm], [obd_data_ods.vin], [obd_data_ods.send_time], [obd_data_ods.torque], [obd_data_ods.fuelflow], [obd_data_ods.lon], | | [obd_data_ods.lat], [obd_data_ods.odometer], [obd_data_ods.receive_time]), partitions(p0) | | is_index_back=false, is_global_index=false, scan_order=noorder, filter_before_indexback[false,false], | | range_key([obd_data_ods.__pk_increment]), range(MIN ; MAX)always true | | | | Used Hint: | | ------------------------------------- | | /*+ | | | | PARALLEL(48) | | */ | | Qb name trace: | | ------------------------------------- | | stmt_id:0, INS$1 > INS$B2DE4D68 | | stmt_id:1, SEL$1 | | | | Outline Data: | | ------------------------------------- | | /*+ | | BEGIN_OUTLINE_DATA | | USE_DISTRIBUTED_DML(@"INS$B2DE4D68") | | PQ_DISTRIBUTE_WINDOW(@"SEL$1" (3) HASH PARTITION_SORT (0,1,2,4,5,7,8,9,10,11,12) HASH PARTITION_SORT (6) NONE) | | PARALLEL(@"SEL$1" "ods"."obd_data_ods"@"SEL$1" 48) | | FULL(@"SEL$1" "ods"."obd_data_ods"@"SEL$1") | | USE_COLUMN_TABLE(@"SEL$1" "ods"."obd_data_ods"@"SEL$1") | | PRED_DEDUCE(@"INS$1") | | PARALLEL(48) | | OPTIMIZER_FEATURES_ENABLE('4.3.5.4') | | END_OUTLINE_DATA | | */ | | Optimization Info: | | ------------------------------------- | | obd_data_ods: | | table_rows:34303390 | | physical_range_rows:335600000 | | logical_range_rows:335600000 | | output_rows:335600000 | | table_dop:48 | | dop_method:Global DOP | | avaiable_index_name:[obd_data_ods] | | stats info:[version=2025-11-17 22:00:37.734357, is_locked=0, is_expired=0] | | dynamic sampling level:0 | | estimation method:[OPTIMIZER STATISTICS, STORAGE] | | | | Plan Type: | | DISTRIBUTED | | | | Parameters: | | :0 => 1 | | :1 => 10 | | :2 => 1 | | :3 => 0 | | :4 => 4 | | :5 => 10 | | :6 => 10 | | :7 => 60 | | :8 => 1 | | :9 => 0 | | :10 => 80 | | :11 => 80 | | :12 => 80 | | :13 => 1 | | :14 => 0 | | | | Note: | | Degree of Parallelism is 48 because of hint | | | | | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ SCHEMA 信息 ASH 信息 SQL_AUDIT 信息 SQL_PLAN_MONITOR DFO 级调度时序汇总 调度时序图 数据时序图 DB Time 算子真实耗时分析图 SQL_PLAN_MONITOR SQC 级汇总 Goto 算子优先 Goto 机器优先 算子优先视图 机器优先视图 SQL_PLAN_MONITOR 详情 Goto 算子优先 Goto 线程优先 算子优先视图 线程优先视图 本报告在租户下使用的 SQL DFO 级 select AVG(ROWS) EST_ROWS, /*0*/ plan_monitor.PLAN_DEPTH PLAN_DEPTH, plan_monitor.PLAN_LINE_ID PLAN_LINE_ID, PLAN_OPERATION, COUNT(*) PARALLEL, MIN(FIRST_REFRESH_TIME) MIN_FIRST_REFRESH_TIME,/*5*/ MAX(LAST_REFRESH_TIME) MAX_LAST_REFRESH_TIME, MIN(FIRST_CHANGE_TIME) MIN_FIRST_CHANGE_TIME, MAX(LAST_CHANGE_TIME) MAX_LAST_CHANGE_TIME, UNIX_TIMESTAMP(MIN(FIRST_REFRESH_TIME)) MIN_FIRST_REFRESH_TS, UNIX_TIMESTAMP(MAX(LAST_REFRESH_TIME)) MAX_LAST_REFRESH_TS, /*10*/ UNIX_TIMESTAMP(MIN(FIRST_CHANGE_TIME)) MIN_FIRST_CHANGE_TS, UNIX_TIMESTAMP(MAX(LAST_CHANGE_TIME)) MAX_LAST_CHANGE_TS, AVG(TIMESTAMPDIFF(MICROSECOND, FIRST_REFRESH_TIME, LAST_REFRESH_TIME)) AVG_REFRESH_TIME, MAX(TIMESTAMPDIFF(MICROSECOND, FIRST_REFRESH_TIME, LAST_REFRESH_TIME)) MAX_REFRESH_TIME, MIN(TIMESTAMPDIFF(MICROSECOND, FIRST_REFRESH_TIME, LAST_REFRESH_TIME)) MIN_REFRESH_TIME, /*15 */ AVG(TIMESTAMPDIFF(MICROSECOND, FIRST_CHANGE_TIME, LAST_CHANGE_TIME)) AVG_CHANGE_TIME, MAX(TIMESTAMPDIFF(MICROSECOND, FIRST_CHANGE_TIME, LAST_CHANGE_TIME)) MAX_CHANGE_TIME, MIN(TIMESTAMPDIFF(MICROSECOND, FIRST_CHANGE_TIME, LAST_CHANGE_TIME)) MIN_CHANGE_TIME, SUM(OUTPUT_ROWS) TOTAL_OUTPUT_ROWS, (MAX(TIMESTAMPDIFF(MICROSECOND, FIRST_CHANGE_TIME, LAST_CHANGE_TIME)) - MIN(TIMESTAMPDIFF(MICROSECOND, FIRST_CHANGE_TIME, LAST_CHANGE_TIME))) / MAX(TIMESTAMPDIFF(MICROSECOND, FIRST_CHANGE_TIME, LAST_CHANGE_TIME)+0.00000001) SKEWNESS, SUM(STARTS) TOTAL_RESCAN_TIMES,/* 20 */ MAX(OTHERSTAT_1_ID) OTHERSTAT_1_ID, SUM(OTHERSTAT_1_VALUE) SUM_STAT_1, MAX(OTHERSTAT_1_VALUE) MAX_STAT_1, MIN(OTHERSTAT_1_VALUE) MIN_STAT_1, AVG(OTHERSTAT_1_VALUE) AVG_STAT_1, /* 25 */ MAX(OTHERSTAT_2_ID) OTHERSTAT_2_ID, SUM(OTHERSTAT_2_VALUE) SUM_STAT_2, MAX(OTHERSTAT_2_VALUE) MAX_STAT_2, MIN(OTHERSTAT_2_VALUE) MIN_STAT_2, AVG(OTHERSTAT_2_VALUE) AVG_STAT_2, /* 30 */ MAX(OTHERSTAT_3_ID) OTHERSTAT_3_ID, SUM(OTHERSTAT_3_VALUE) SUM_STAT_3, MAX(OTHERSTAT_3_VALUE) MAX_STAT_3, MIN(OTHERSTAT_3_VALUE) MIN_STAT_3, AVG(OTHERSTAT_3_VALUE) AVG_STAT_3, /* 35 */ MAX(OTHERSTAT_4_ID) OTHERSTAT_4_ID, SUM(OTHERSTAT_4_VALUE) SUM_STAT_4, MAX(OTHERSTAT_4_VALUE) MAX_STAT_4, MIN(OTHERSTAT_4_VALUE) MIN_STAT_4, AVG(OTHERSTAT_4_VALUE) AVG_STAT_4, /* 40 */ MAX(OTHERSTAT_5_ID) OTHERSTAT_5_ID, SUM(OTHERSTAT_5_VALUE) SUM_STAT_5, MAX(OTHERSTAT_5_VALUE) MAX_STAT_5, MIN(OTHERSTAT_5_VALUE) MIN_STAT_5, AVG(OTHERSTAT_5_VALUE) AVG_STAT_5, /* 45*/ MAX(OTHERSTAT_6_ID) OTHERSTAT_6_ID, SUM(OTHERSTAT_6_VALUE) SUM_STAT_6, MAX(OTHERSTAT_6_VALUE) MAX_STAT_6, MIN(OTHERSTAT_6_VALUE) MIN_STAT_6, AVG(OTHERSTAT_6_VALUE) AVG_STAT_6 /* 50 */, TRUNCATE(AVG(DB_TIME)/1000000000.0/2.5, 4) MY_DB_TIME, TRUNCATE(AVG(DB_TIME-USER_IO_WAIT_TIME)/1000000000.0/2.5, 4) MY_CPU_TIME, TRUNCATE(AVG(USER_IO_WAIT_TIME)/1000000000.0/2.5, 4) MY_IO_TIME from ( select * FROM oceanbase.gv$sql_plan_monitor where trace_id = 'YB420A3D0CA2-0006422B90620C30-0-0' ) plan_monitor LEFT JOIN ( SELECT ROWS, PLAN_LINE_ID FROM oceanbase.gv$ob_plan_cache_plan_explain WHERE plan_id = 14578 AND tenant_id = 1002 and svr_ip = '10.61.12.162' and svr_port = 2882 ) plan_explain ON plan_monitor.PLAN_LINE_ID = plan_explain.PLAN_LINE_ID GROUP BY plan_monitor.PLAN_LINE_ID, plan_monitor.PLAN_OPERATION ORDER BY plan_monitor.PLAN_LINE_ID ASC; 机器级 select PLAN_DEPTH, PLAN_LINE_ID, PLAN_OPERATION, COUNT(*) PARALLEL, MIN(FIRST_REFRESH_TIME) MIN_FIRST_REFRESH_TIME, MAX(LAST_REFRESH_TIME) MAX_LAST_REFRESH_TIME, MIN(FIRST_CHANGE_TIME) MIN_FIRST_CHANGE_TIME, MAX(LAST_CHANGE_TIME) MAX_LAST_CHANGE_TIME, UNIX_TIMESTAMP(MIN(FIRST_REFRESH_TIME)) MIN_FIRST_REFRESH_TS, UNIX_TIMESTAMP(MAX(LAST_REFRESH_TIME)) MAX_LAST_REFRESH_TS, UNIX_TIMESTAMP(MIN(FIRST_CHANGE_TIME)) MIN_FIRST_CHANGE_TS, UNIX_TIMESTAMP(MAX(LAST_CHANGE_TIME)) MAX_LAST_CHANGE_TS, AVG(TIMESTAMPDIFF(MICROSECOND, FIRST_REFRESH_TIME, LAST_REFRESH_TIME)) AVG_REFRESH_TIME, MAX(TIMESTAMPDIFF(MICROSECOND, FIRST_REFRESH_TIME, LAST_REFRESH_TIME)) MAX_REFRESH_TIME, MIN(TIMESTAMPDIFF(MICROSECOND, FIRST_REFRESH_TIME, LAST_REFRESH_TIME)) MIN_REFRESH_TIME, AVG(TIMESTAMPDIFF(MICROSECOND, FIRST_CHANGE_TIME, LAST_CHANGE_TIME)) AVG_CHANGE_TIME, MAX(TIMESTAMPDIFF(MICROSECOND, FIRST_CHANGE_TIME, LAST_CHANGE_TIME)) MAX_CHANGE_TIME, MIN(TIMESTAMPDIFF(MICROSECOND, FIRST_CHANGE_TIME, LAST_CHANGE_TIME)) MIN_CHANGE_TIME, SUM(OUTPUT_ROWS) TOTAL_OUTPUT_ROWS, (MAX(TIMESTAMPDIFF(MICROSECOND, FIRST_CHANGE_TIME, LAST_CHANGE_TIME)) - MIN(TIMESTAMPDIFF(MICROSECOND, FIRST_CHANGE_TIME, LAST_CHANGE_TIME))) / MAX(TIMESTAMPDIFF(MICROSECOND, FIRST_CHANGE_TIME, LAST_CHANGE_TIME)) SKEWNESS, SUM(STARTS) TOTAL_RESCAN_TIMES, SVR_IP, SVR_PORT, MAX(OTHERSTAT_1_VALUE) MAX_STAT_1, MIN(OTHERSTAT_1_VALUE) MIN_STAT_1, AVG(OTHERSTAT_1_VALUE) AVG_STAT_1, MAX(OTHERSTAT_2_VALUE) MAX_STAT_2, MIN(OTHERSTAT_2_VALUE) MIN_STAT_2, AVG(OTHERSTAT_2_VALUE) AVG_STAT_2, MAX(OTHERSTAT_3_VALUE) MAX_STAT_3, MIN(OTHERSTAT_3_VALUE) MIN_STAT_3, AVG(OTHERSTAT_3_VALUE) AVG_STAT_3, MAX(OTHERSTAT_4_VALUE) MAX_STAT_4, MIN(OTHERSTAT_4_VALUE) MIN_STAT_4, AVG(OTHERSTAT_4_VALUE) AVG_STAT_4, MAX(OTHERSTAT_5_VALUE) MAX_STAT_5, MIN(OTHERSTAT_5_VALUE) MIN_STAT_5, AVG(OTHERSTAT_5_VALUE) AVG_STAT_5, MAX(OTHERSTAT_6_VALUE) MAX_STAT_6, MIN(OTHERSTAT_6_VALUE) MIN_STAT_6, AVG(OTHERSTAT_6_VALUE) AVG_STAT_6, TRUNCATE(AVG(DB_TIME)/1000000000.0/2.5, 4) MY_DB_TIME, TRUNCATE(AVG(DB_TIME-USER_IO_WAIT_TIME)/1000000000.0/2.5, 4) MY_CPU_TIME, TRUNCATE(AVG(USER_IO_WAIT_TIME)/1000000000.0/2.5, 4) MY_IO_TIME from oceanbase.gv$sql_plan_monitor where trace_id = 'YB420A3D0CA2-0006422B90620C30-0-0' GROUP BY PLAN_LINE_ID,PLAN_OPERATION,SVR_IP,SVR_PORT ORDER BY PLAN_LINE_ID ASC, MAX_CHANGE_TIME ASC, SVR_IP, SVR_PORT; 线程级 select PLAN_DEPTH,/*0*/ SVR_IP, SVR_PORT, PROCESS_NAME, PLAN_LINE_ID, PLAN_OPERATION, /*5*/ OUTPUT_ROWS, STARTS RESCAN_TIMES, FIRST_REFRESH_TIME, LAST_REFRESH_TIME, FIRST_CHANGE_TIME,/*10*/ LAST_CHANGE_TIME, UNIX_TIMESTAMP(FIRST_REFRESH_TIME) FIRST_REFRESH_TS, UNIX_TIMESTAMP(LAST_REFRESH_TIME) LAST_REFRESH_TS, UNIX_TIMESTAMP(LAST_REFRESH_TIME) - UNIX_TIMESTAMP(FIRST_REFRESH_TIME) REFRESH_TS, UNIX_TIMESTAMP(FIRST_CHANGE_TIME) FIRST_CHANGE_TS, /*15*/ UNIX_TIMESTAMP(LAST_CHANGE_TIME) LAST_CHANGE_TS, UNIX_TIMESTAMP(LAST_CHANGE_TIME) - UNIX_TIMESTAMP(FIRST_CHANGE_TIME) CHANGE_TS, OTHERSTAT_1_ID, OTHERSTAT_1_VALUE, OTHERSTAT_2_ID, /*20*/ OTHERSTAT_2_VALUE, OTHERSTAT_3_ID, OTHERSTAT_3_VALUE, OTHERSTAT_4_ID, OTHERSTAT_4_VALUE, /*25*/ OTHERSTAT_5_ID, OTHERSTAT_5_VALUE, OTHERSTAT_6_ID, OTHERSTAT_6_VALUE, TRUNCATE((DB_TIME)/1000000000.0/2.5, 4) MY_DB_TIME, TRUNCATE((DB_TIME-USER_IO_WAIT_TIME)/1000000000.0/2.5, 4) MY_CPU_TIME, TRUNCATE((USER_IO_WAIT_TIME)/1000000000.0/2.5, 4) MY_IO_TIME from oceanbase.gv$sql_plan_monitor where trace_id = 'YB420A3D0CA2-0006422B90620C30-0-0' ORDER BY PLAN_LINE_ID ASC, SVR_IP, SVR_PORT, CHANGE_TS, PROCESS_NAME ASC; Report generation time: 2025-11-19 12:12:34 obdiag version: 3.7.1 observer version: 4.3.5.4 observer commit id: 4.3.5.4_104000042025090916-5cf5b925a25bf888aebaa288e251b85b1924e98a(Sep 9 2025 17:07:11)