Вот пример запроса, который возвращает для одного свойства в фильтре набор свойств для категории и ее подкатегорий (чтобы не показывать лишние значения свойств, которых нет в данной категории):
FROM mc_tags t
INNER JOIN mc_tags_groups tg ON t.group_id = tg.id
INNER JOIN mc_tags_products tp ON t.id = tp.tag_id
INNER JOIN mc_products_categories pc ON tp.product_id = pc.product_id
INNER JOIN mc_categories cats ON pc.category_id = cats.id
INNER JOIN mc_products p ON pc.product_id = p.id
INNER JOIN mc_products_properties props ON p.id=props.product_id
WHERE 1
AND pc.category_id in (5496,5497,5498,5714,5715,5716,5717,5718,5719,5720,5721,6250,6252,7249,7250,7251,7252,7253,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,9120,10963,10986,10987,10988,10989,5495,5504,5541,5619,5638,5693,5694,5695,5697,5709,5710,5711,5712,5713,5984,6051,6276,6277,6278,6608,6862,7187,7280,7304,7407,7516,8809,9284,9293,11000,5503,5510)
AND p.visible=1
AND cats.visible=1
AND pc.position=0
AND p.add_flag1=0
AND tg.id in (13)
AND t.enabled=1
ORDER BY t.name
Без кеша отрабатывает за 0.2 сек.
Но когда в фильтре много различных свойств, то приходится по очереди отбирать значения для каждого свойства, и если таких свойств в фильтре порядка 15 шт, то это уже 3 секунды + потом отбираются товары на основе этих выбранных свойств (+0.2-0.3 секунды).
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.