1. Возможно, тут более правильно использовать noSQL.
2. Даже если SQL (= РСУБД) - нужно избавляться от JOIN-ов.
Но! ! Уровень JOIN-ов =1 может оказаться вполне приемлем, если вы
- при фильтрации на фронте сразу выделите id связанных сущностей (бренд, цвет, и т.п.)
- правильно настроите индексы, и сделаете правильные запросы
Например, при хотя бы одном активном фильтре делаете 1 SELECT, а потому уже в PHP (или что там у вас) отфильтровываете по другим параметрам.
И да, надеюсь, тексты и тем более картинки (не в БД же они?) у вас не выбираются этим же запросом?
Если вдруг выбираются (типа SELECT * ..), замените "*" на "поле1, поле2" (только нужные), может оказаться приятным сюрпризом