我有这个查询,但需要大约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
答案 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