powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите оптимизировать запрос
1 сообщений из 1, страница 1 из 1
Помогите оптимизировать запрос
    #39297129
gerasim9393
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
есть некий запрос созданный неким разработчиком:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
explain extended
SELECT 
	DISTINCT *,
	pd.name AS name, 
	p.image, 
	p.city as zone, 
	p.href as product_url, 
	p.product_id as product_id, 
	p.shipping_text as shipping_text, 
	p.payment_text as payment_text,
	p.sort_order, 
	p.shipping as shipping, 
	p.sort_order, 
	v.partner, 
	v.store_url as out_href, 
	co.name as country, 
	(SELECT price FROM product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' 
		AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2016-08-24 11:45:00') 
		AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2016-08-24 11:45:00')) 
		ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, 
	(SELECT price FROM product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' 
		AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2016-08-24 11:45:00') 
		AND (ps.date_end = '0000-00-00' OR ps.date_end > '2016-08-24 11:45:00')) 
		ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, 
	(SELECT points FROM product_reward pr WHERE pr.product_id = p.product_id AND pr.customer_group_id = '1') AS reward, 
	(SELECT ss.name FROM stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '8') AS stock_status, 
	(SELECT wcd.unit FROM weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '8') AS weight_class, 
	(SELECT lcd.unit FROM length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '8') AS length_class, 
	(SELECT AVG(rating) AS total FROM review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, 
	(SELECT COUNT(*) AS total FROM review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews
FROM product p 
INNER JOIN product_description pd ON (p.product_id = pd.product_id) 
LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) 
INNER JOIN country co ON (p.country_id = co.country_id) 
INNER JOIN vendor vv ON (vv.vproduct_id = p.product_id) 
INNER JOIN vendors v ON (vv.vendor = v.vendor_id) 
WHERE p.product_id = '337388' 
	AND pd.language_id = '8' 
	AND p.status = '1' 
	AND p.date_available <= '2016-08-24 11:45:00';
SHOW warnings;




который выдает такой вывод http://shot.qip.ru/00PJSZ-2AD7h4cdS/
мне необходимо его оптимизировать. не вдаваясь в тонкие подробности. я как бы не привожу код запроса на создание таблиц, ибо не флудить (очень много коду будет). мне бы лишь тыкнуть на что смотреть и краткие рекомендации возникающие у опытных и умелых бд-шников с первого взгляда. ибо explain юзать не умею особо и не понимаю почему у меня несколько таблиц в table пишут NULL. что это означает? и что означают комментарии в Extra около них?
в целом вопрос хотел бы задать так: как проводится оптимизация запросов грамотно? какими инструментами, в какой последовательности, и т.д...

Спасибо.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите оптимизировать запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]