花公子丶 2016-01-06 11:42 采纳率: 50%
浏览 1398
已采纳

求帮忙优化我这条sql语句

首先说一下下面sql语句要用到的表的基本情况:
一、有三张表,一张叫equipment,一张叫sensor,一张叫sensorInputData
二、三表关系是equipment下有多个sensor,sensor下有多个sensorInputdata,所以sensor下有一个equipment的主键quipmentId做外键,sensorInputData下也有一个sensor的主键sensorId做外键,其他都是各自表的属性,应该能比较清晰的看出来
下面是我的查询代码:

 select 
equipment.equipmentName as 设备,
equipment.longitude as 经度,
equipment.latitude as 纬度,
equipment.equipmentType as 设备类型,
data.数据类型 as 数据类型,
Convert(decimal(18,2),data.数据) as 数据,
data.单位 as 单位,
convert(varchar(20), data.日期,120) as 日期  
from EquipmentMessage as equipment
left join
(
    select 
    sensor.sensorUnit as 单位,
    sensorData.value as 数据,
    sensorData.date as 日期,
    sensorData.valueType as 数据类型,
    sensor.equipmentId as equipmentId 
    from Sensor as sensor 
    join SensorInputData as sensorData on sensor.sensorId=sensorData.sensorId 
    and not exists 
    (
        select 1 from SensorInputData as t where t.sensorId=sensorData.sensorId and t.date>sensorData.date
    )
) as data on equipment.equipmentId=data.equipmentId 

左连接是查出传感器(sensor表)与传感器的第一条数据(sensorInputData表)

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-01-06 16:27
    关注

    t.sensorId=sensorData.sensorId and t.date>sensorData.date
    这两个字段要加上索引,否则查询很慢的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器