У меня есть система, которая имеет 3 объекта - Brands
, Categories
и Products
.Я использую Nhibernate в качестве своего ORM.
Продукт назначен одному brand
и нескольким Categories
.Для веб-сайта электронной коммерции, который мы создаем, нам нужно показать меню брендов слева.Для каждого бренда идея состоит в том, чтобы показать категории, которые имеют ТОЛЬКО продукт, данного бренда.
Например, если у нас есть 3 категории - кемпинг, пеший туризм и скалолазание, и 3 бренда A, B, C,Если у бренда А нет товаров, которые подпадают под категорию «Восхождение», категория не будет отображаться.
Проблема заключается в том, как сделать это эффективно.Для каждого бренда требуется пройти через каждую категорию и проверить, есть ли хотя бы один продукт под этой категорией текущего бренда.С 200 категориями и 20 брендами в худшем случае это приведет примерно к 2000 вызовам базы данных.
Другим вариантом будет загрузка всех продуктов в память, но если продуктов много (более 20 000 +), то и в этом случае работа будет медленной.
Какие-нибудь идеи / оптимизации, которые я мог бы сделать, чтобы он загружался намного быстрее?