Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Привет всем может кто подскажит как можно сократить время запроса, у меня на него уходит около минуты.
Хотя при всем не так много записей в БД
tovar_product_1c (5065 записей)
tovar_product_price_1c (3299 записей)
tovar_product_price (5517 записей)
tovar_product (4695 записей)
Файл с БД : https://cloud.mail.ru/public/KjC1/B9aGCchat
Ну и сам запрос:
SELECT
x1.tip_db,x1.id_1c,x1.fl_obrabotka_1c,x1.key_product,x1.name,
x2.price,x2.count,
x4.tovar_name,x4.tovar_link
FROM tovar_product_1c AS x1
LEFT JOIN tovar_product_price_1c AS x2 ON x2.key_product=x1.key_product AND x2.tip_db=x1.tip_db
LEFT JOIN tovar_product_price as x3 ON x3.price_shtrih_kod=x1.key_product AND x1.tip_db=x1.tip_db
LEFT JOIN tovar_product as x4 ON x4.tovar_id=x3.id_product
WHERE x1.tip_db is NOT null
GROUP BY x1.tip_db,x1.key_product
Неактивен
Приведите результат EXPLAIN для данного запроса
Неактивен
Неактивен
Попробовать убрать условие NOT NULL (если логика позволяет) и добавить индекс для tovar_product_1c KEY(tip_db,key_product). Кажется, что группировка в запросе сделана по ошибке и имелась в виду сортировка (никаких агрегатных функций к выбираемым полям не применяется).
Неактивен
rgbeast написал:
Попробовать убрать условие NOT NULL (если логика позволяет) и добавить индекс для tovar_product_1c KEY(tip_db,key_product). Кажется, что группировка в запросе сделана по ошибке и имелась в виду сортировка (никаких агрегатных функций к выбираемым полям не применяется).
У таблицы tovar_product_1c уже есть ключи
Попробовать убрать условие NOT NULL
Отбор по NULL я сделал чтоб лишние записи не отображались
Неактивен
1) условие AND x1.tip_db=x1.tip_db смысла не имеет
2) `tip_db` в таблицах tovar_product_1c и tovar_product_price_1c имеет 1 уникальное значение и нет не заполненных строк
если так будет всегда, то поля можно определить как not null и убрать условие AND x2.tip_db=x1.tip_db
3) делать отдельные индексы на столбцы с единственным значением бессмысленно, например,
KEY `tip_db` (`tip_db`),
KEY `fl_obrabotka_1c` (`fl_obrabotka_1c`),
4) почему именно left join, а не join
5) опишите, что вы хотите получить этим запросом, есть предположение, что его можно упростить
Неактивен
Страниц: 1