72 похожих чатов

Приветствую,Ребята,Можете подсказать,как можно оптимизировать данный запрос ? SELECT DISTINCT `id_product`, `type`,

'product_name_' AS `product_name`, variation.price as `cost.price`, null as `cost.sale_price`, variation.stock_status as `cost.stock_status`, JSON_EXTRACT(`products`.`img`, '$[0]') AS `img`, `_v`, `categoryId`, `name_attr`, `slug` FROM `products` AS `products` LEFT JOIN variations AS variation on variation.id = (select id from variations where variations.productsId = products.id_product group by price limit 1) WHERE `products`.`show` = true AND `products`.`trash` = false ORDER BY `products`.`_v` DESC LIMIT 4

11 ответов

18 просмотров

С наскока можно только сказать, что DISTINCT можно попробовать заменить группировкой, а танцы с LIMIT и ORDER - оконной ф-ей

Amwey- Автор вопроса
Amwey
можно подробнее пожалуйста?

Ну DISTINCT id_product, type, 'product_name_' AS product_name, variation.price as cost.price, null as cost.sale_price, variation.stock_status as cost.stock_status, JSON_EXTRACT(products.img, '$[0]') AS img, _v, categoryId, name_attr, slug = select id_product, type, 'product_name_' AS product_name, variation.price as cost.price, null as cost.sale_price, variation.stock_status as cost.stock_status, JSON_EXTRACT(products.img, '$[0]') AS img, _v, categoryId, name_attr, slug.... group by id_product, type, 'product_name_' AS product_name, variation.price as cost.price, null as cost.sale_price, variation.stock_status as cost.stock_status, JSON_EXTRACT(products.img, '$[0]') AS img, _v, categoryId, name_attr, slug

Amwey- Автор вопроса
RL
Ну DISTINCT id_product, type, 'product_name_' AS p...

на этот код упала ошибка.. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`product_name, variation.price as cost.price, null as cost.sale_price, varia tion' at line 1

вот такие конструкции тяжело работают по причине order by, postgresql должен всю выборку отсортировать и из нее отдать вам 4 записи. как минимум индекс по выражению order by надо иметь. и distinct тудаже.

Amwey- Автор вопроса
Ildar Garaev
вот такие конструкции тяжело работают по причине o...

А что бы Вы могли посоветовать в моем случае?

Amwey
А что бы Вы могли посоветовать в моем случае?

добавить условие по дате например, чтобы только за текущий день или месяц

FROM products AS products LEFT JOIN variations AS variation on variation.id = (select id from variations where variations.productsId = products.id_product group by price limit 1) WHERE products.show = true AND products.trash = false ORDER BY products._v DESC LIMIT 4 Тут два SARG на boolean - селективность вряд ли высокая. НОЛЬ шансов на оптимизацию. И ещё там JOIN не по равенству - это вообще самоубийство. Один шанс у запроса - если в product будет очень мало записей, типа до 10 тысяч.

Amwey
А что бы Вы могли посоветовать в моем случае?

выбросить запрос, написать заново. НЕ показывать все товары, а только нужные, которые искать по критериям, а не просто тупо все. Убрать JOIN на variation - показывать его потом, если будет нужно пользователю. ЛИБО предвычислять нужный variation c минимальной (или какой нужно) ценой и сохранять прямую ссылку в product. В общем, не должно быть JOIN не по = Убрать distinct он на хер не нужен. Дубликаты товаров есть ? Ведите тов. номенклатуру должным образом.

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

Обсуждают сегодня

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта