如何简化我的SQL查询

时间:2012-01-31 20:54:37

标签: mysql sql

我有这个查询,但需要大约15秒才能完成..我怎样才能简单地在更短的时间内获得相同的结果?我的问题是我需要所有这些数据。

SELECT * FROM (
    SELECT c.client_id, c.client_name, c.client_bpm,
                   c.client_su_name, c.client_maxbpm, s.bpm, 
                   s.timestamp, m.mesure_id, ms.currentT
    FROM tbl_clients c, tbl_meting m, tbl_sensor_meting s, 
                        tbl_magsens_meting ms
    WHERE c.client_id = m.client_id
    AND (m.mesure_id = s.id_mesure
            OR m.mesure_id = ms.id_mesure)
    AND m.live =1
    ORDER BY s.timestamp DESC
        ) AS mesure
          GROUP BY mesure.client_id

1 个答案:

答案 0 :(得分:2)

我认为问题可能是OR条款中的WHERE条件?你似乎试图加入一张桌子或另一张桌子,这是你做不到的。所以我用LEFT JOIN替换了它,所以如果没有相关记录存在,将不会返回任何内容。

我也拿出了你的GROUP BY,因为我觉得不需要。

SELECT c.client_id, c.client_name, c.client_bpm,
               c.client_su_name, c.client_maxbpm, s.bpm, 
               s.timestamp, m.mesure_id, ms.currentT
FROM         tbl_clients         c
  JOIN       tbl_meting          m   ON m.client_id = c.client_id
  LEFT JOIN  tbl_sensor_meting   s   ON s.id_mesure = m.mesure_id
  LEFT JOIN  tbl_magsens_meting  ms  ON ms.id_mesure = m.mesure_id
WHERE m.live = 1
ORDER BY s.timestamp DESC