花公子丶 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
    这两个字段要加上索引,否则查询很慢的。

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

报告相同问题?

悬赏问题

  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?
  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 微信小游戏反编译后,出现找不到分包的情况
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)