Оптимизация запроса My SQL

164
28 ноября 2018, 22:30

Решил заняться оптимизацией запросов на интернет-магазине, ибо в таблице товаров уже порядка 15000 наименований, и загрузка страницы стала заметно подтупливать, не критично, но и не особо приятно. Вот хочу посоветоваться с вами, кто, что посоветует.

Есть таблицы: 1 - t1 - коллекции 2 - t3 - товары (привязаны к коллекции по collection_id) 3 - t3 - характеристики товаров (привязаны к товарам по product_id)

Мы в каталоге выводим коллекции, основываясь на сортировке по характеристикам товаров, запрос получается громоздкий:

SELECT
    DISTINCT
    `t1`.`title`,
    `t1`.`id`,
    `t1`.`imgs`,
    `t1`.`price`,
    `t1`.`code_col`,
    `t1`.`brand_id`,
    count(*) as cnt
FROM
    `t1`
INNER JOIN
    `t2` ON `t1`.`id` = `t2`.`collection_id`
INNER JOIN 
    `t3` ON `t2`.`id` = `t3`.`product_id`
WHERE 
    `t1`.`section_id` = 1
    + куча параметров из сортировки по разным таблицам
GROUP BY 
    `t2`.`id`
HAVING
    cnt = 1 (кол-во разных параметров сортировки)
ORDER BY  
    `t1`.`price` * (1 - `sale`), `t1`.`id`
LIMIT 
    0, 30 (и т.д. постраничная навигация по 30 штук на странице)

Иногда появляется еще один INNER JOIN с размерами товаров (отдельная таблица размеров, соединяется с товарами по product_id)

Можно ли как-нибудь облегчить сию конструкцию?

READ ALSO
Можно ли писать на С++ со сборщиком мусора?

Можно ли писать на С++ со сборщиком мусора?

Пишу на С/С++, но вижу, что языки со сборкой мусора набирают популярностьОпять же надоело искать утечки памяти

144
Изменение значения параметра объекта в QML из потока

Изменение значения параметра объекта в QML из потока

Есть qml файл в котором нарисован датчик, содержимое примерно такое:

172
Помогите разобраться с заданием

Помогите разобраться с заданием

Вообщем вот задание

201
Есть альтернатива size(), только для массивов?

Есть альтернатива size(), только для массивов?

В функции array_print параметр arr является указателем на элемент массиваУзнать размер массива по указателю на его элемент невозможно

191