Задать вопрос
@aopil

Как оптимизировать sql запрос?

SELECT B.Id AS IdProxy, B.Ip, B.Country FROM sc_proxy B WHERE (SELECT COUNT(*) FROM sc_proxy_request_log C WHERE C.IdSite = '11' AND B.Ip = C.IpProxy) <= '3' ORDER BY B.Id DESC LIMIT 1


Чем больше записей в таблице sc_proxy_request_log тем медленнее начинает работать запрос, доходит до такого, что пару минут выполняется.
  • Вопрос задан
  • 61 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `t2`.*
  FROM (
    SELECT `IpProxy`
      FROM `sc_proxy_request_log`
      WHERE `IdSite` = '11'
      GROUP BY `IpProxy`
      HAVING COUNT(*) <= 3
  ) AS `t1`
  JOIN `sc_proxy` AS `t2` ON `t2`.`Ip` = `t1`.`IpProxy`

Ну и индексы по результатам EXPLAIN.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы