загрузка брендов -> категории -> качественная продукция - PullRequest
1 голос
/ 18 июля 2011

У меня есть система, которая имеет 3 объекта - Brands, Categories и Products.Я использую Nhibernate в качестве своего ORM.

Продукт назначен одному brand и нескольким Categories.Для веб-сайта электронной коммерции, который мы создаем, нам нужно показать меню брендов слева.Для каждого бренда идея состоит в том, чтобы показать категории, которые имеют ТОЛЬКО продукт, данного бренда.

Например, если у нас есть 3 категории - кемпинг, пеший туризм и скалолазание, и 3 бренда A, B, C,Если у бренда А нет товаров, которые подпадают под категорию «Восхождение», категория не будет отображаться.

Проблема заключается в том, как сделать это эффективно.Для каждого бренда требуется пройти через каждую категорию и проверить, есть ли хотя бы один продукт под этой категорией текущего бренда.С 200 категориями и 20 брендами в худшем случае это приведет примерно к 2000 вызовам базы данных.

Другим вариантом будет загрузка всех продуктов в память, но если продуктов много (более 20 000 +), то и в этом случае работа будет медленной.

Какие-нибудь идеи / оптимизации, которые я мог бы сделать, чтобы он загружался намного быстрее?

1 Ответ

0 голосов
/ 18 июля 2011

вы можете использовать QueryOver , чтобы получить для каждого бренда свои категории и количество продуктов в этой категории.что-то вроде этого (у меня в настоящее время нет доступа к моим ссылкам, поэтому это может быть не на 100% точно, но вы сможете понять мое значение):быть для определения формулы свойство для класса Category, который будет возвращать количество продуктов, связанных с этой категорией.

...