vhuk1802
@vhuk1802

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

Дело в том, что при исполнении такого запроса
( SELECT MAX ( discount_price ) FROM OPTIONS WHERE products.ID = OPTIONS.product_id ) AS max_price


очень медленно работает:
SELECT options.product_id,
	( SELECT MAX ( discount_price ) FROM OPTIONS WHERE products.ID = OPTIONS.product_id ) AS max_price,
	products.slug,
	products.NAME AS NAME,
	products.ID AS ID,
	products.picture_id,
	meta_id,
	products.description AS description,
	updated_at,
	purchases,
	priority 
FROM
	"products"
	LEFT JOIN "options" ON "options"."product_id" = "products"."id" 
WHERE  "products"."product_status_id" = 1 
	AND "options"."active" = true
	AND "products"."deleted_at" IS NULL 
GROUP BY
	"products"."id",
	"options"."product_id" 
ORDER BY
	"max_price" ASC 
	LIMIT 24
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Логично. Вложенные зависимые подзапросы - это очень плохо. А вообще-то весь запрос кривой и в новых версиях MySQL работать не будет из-за ограничений на поля при группировке.
SELECT *
  FROM `products` 
  JOIN (
    SELECT MAX(`discount_price`) AS `max_price`, `product_id`
      FROM `options`
      GROUP BY `product_id`
    ) AS `max` ON `max`.`product_id` = `products`.`id`
  ORDER BY `max`.`max_price` ASC
  LIMIT 24
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы