Быстрая фильтрация товаров по множеству свойств?

Здравствуйте!

Нужен совет. Имеется проект интернет-магазина. Товаров около 45 тыс.
Каждый товар обладает некоторыми свойствами, у всех товаров различный набор свойств.
Свойств около 150 шт. Товар может содержать несколько значений одного свойства.
Уникальных значений свойств всего около 130 тыс.
Индексы у всех таблиц проставлены, проверял запрос через explain, все связи идут с использованием ключей.
При фильтрации и выборе большого числа свойств в фильтре, проседает скорость, вместо 1-2 сек, страница генерируется временами 8-10 сек. Может кто сталкивался с подобным и знает пути решения проблемы, ссылки приветствуются :-)
Может кто то решал подобное с использованием поисковых движков типа ElasticSearch или Sphinx?
Заранее спасибо!

Связь таблиц следующая:

Products (45 тыс. записей):
product_id int,
name varchar(150),
...

Properties (~150 записей):
property_id int,
name varchar(100),
...

Properties_Values (~130 тыс. записей):
value_id int,
property_id int (связь с таблицей Properties),
value varchar(100),
...

Products_Values (~600-650 тыс. записей):
product_id int (связь с таблицей Products),
value_id int (связь с таблицей Properties_Values),
  • Вопрос задан
  • 1181 просмотр
Решения вопроса 2
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Есть множество решений - Сфинкс, эластик, PostgreSQL Textsearch, PostgreSQL HStore.
Но с таким количеством записей вполне может справится и обычный MySQL без проседаний в скорости, главное оптимизировать запрос.

Можете предоставить пример генерируемого запроса? Дам советы как избавиться от проседаний, и довести время поиска до <500 мс.
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
Sphinx, faceting, MVA
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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