SELECT bd.SENSOR_ID as sensorId, si.sensor_name AS sensorName, si.dam_id as damId, bd.WATER_LEVEL AS waterLevel, bd.WATER_TOP AS waterTop , bd.HOLE_DEPTH AS holeDepth, td.height-bd.WATER_TOP AS buryDepth FROM ( SELECT DAM_ID,SENSOR_ID, WATER_LEVEL,WATER_TOP, HOLE_DEPTH, ROW_NUMBER ( ) OVER ( PARTITION BY SENSOR_ID ORDER BY UPLOAD_TIME DESC ) AS RN FROM B_DAM_WATER_LEVEL ) bd LEFT JOIN sensor_info si ON bd.SENSOR_ID = si.sensor_id LEFT JOIN tailings_dam td ON bd.DAM_ID=td.dam_id WHERE bd.RN = 1 给我优化一下查询速度
时间: 2024-02-14 19:06:31 浏览: 180
可以尝试以下几种优化方法:
1. 添加索引:对 B_DAM_WATER_LEVEL 表中的 SENSOR_ID 和 UPLOAD_TIME 字段添加联合索引,对 SENSOR_INFO 表中的 SENSOR_ID 字段添加索引,对 TAILINGS_DAM 表中的 DAM_ID 字段添加索引。
```
CREATE INDEX idx_sensor_upload ON B_DAM_WATER_LEVEL (SENSOR_ID, UPLOAD_TIME);
CREATE INDEX idx_sensor ON SENSOR_INFO (SENSOR_ID);
CREATE INDEX idx_dam ON TAILINGS_DAM (DAM_ID);
```
2. 使用 EXISTS 子查询代替 LEFT JOIN:将 LEFT JOIN 改为 EXISTS 子查询,可以避免重复数据的产生,从而提高查询效率。
```
SELECT bd.SENSOR_ID as sensorId, si.sensor_name AS sensorName, si.dam_id as damId, bd.WATER_LEVEL AS waterLevel, bd.WATER_TOP AS waterTop , bd.HOLE_DEPTH AS holeDepth, td.height-bd.WATER_TOP AS buryDepth
FROM (
SELECT DAM_ID,SENSOR_ID, WATER_LEVEL,WATER_TOP, HOLE_DEPTH
FROM B_DAM_WATER_LEVEL bd1
WHERE bd1.RN = 1
AND EXISTS (
SELECT 1
FROM B_DAM_WATER_LEVEL bd2
WHERE bd2.SENSOR_ID = bd1.SENSOR_ID
AND bd2.UPLOAD_TIME > bd1.UPLOAD_TIME
)
) bd
WHERE bd.SENSOR_ID = si.sensor_id
AND bd.DAM_ID = td.dam_id;
```
3. 减少 SELECT 中的字段数量:只查询需要的字段,避免不必要的开销。
```
SELECT bd.SENSOR_ID as sensorId, si.sensor_name AS sensorName, si.dam_id as damId, bd.WATER_LEVEL AS waterLevel, bd.WATER_TOP AS waterTop , bd.HOLE_DEPTH AS holeDepth, td.height-bd.WATER_TOP AS buryDepth
FROM (
SELECT DAM_ID,SENSOR_ID, WATER_LEVEL,WATER_TOP, HOLE_DEPTH
FROM B_DAM_WATER_LEVEL bd1
WHERE bd1.RN = 1
AND EXISTS (
SELECT 1
FROM B_DAM_WATER_LEVEL bd2
WHERE bd2.SENSOR_ID = bd1.SENSOR_ID
AND bd2.UPLOAD_TIME > bd1.UPLOAD_TIME
)
) bd
WHERE bd.SENSOR_ID = si.sensor_id
AND bd.DAM_ID = td.dam_id;
```
阅读全文
相关推荐


















