как упростить мой SQL-запрос - PullRequest
       3

как упростить мой SQL-запрос

1 голос
/ 01 февраля 2012

У меня есть этот запрос, но он занимает около 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 Ответ

2 голосов
/ 01 февраля 2012

Я думаю, что проблема может быть в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...