Для приличной реализации нужен фасетный поиск.
Или фасетирование. (
https://en.wikipedia.org/wiki/Faceted_search )
Иерархический поиск тормозит при "Больших Данных".
Слева иерархический, справа фасетный.
![c41e41856e18411fb0bdd8d20cdef195.gif](https://habrastorage.org/files/c41/e41/856/c41e41856e18411fb0bdd8d20cdef195.gif)
Чтобы у пользователя было возможность принимать решение пошагово
(
https://en.wikipedia.org/wiki/Data_drilling ) на основании того сколько марок, брендов, цветов, размеров
или как на скиншоте
![45c74008742a479084cdfa4e32c1b8b5.png](https://habrastorage.org/files/45c/740/087/45c74008742a479084cdfa4e32c1b8b5.png)
производителей и способов доставки соответсвует фильтру и нужно фасетирование.
здесь SQL неподходит, пробуйте готовое речешение (solr, elasticsearch и т.д.)