Ситуация такая.
Есть таблица с полями product_id и category_id. Связи много-много.
На входе: 1 — список категорий и 2 — список категорий-исключений.
На выходе: список товаров, входящие в категории первого списка, но не входящие в категории второго списка.
В общем, алгоритм топорный:
Делаю запрос выбора товаров по первому списку, получаю список товаров, потом в цикле для каждого товара (и каждой категории-исключения) делаю запрос примерно такого вида:
SELECT EXIST( SELECT 1 FROM table WHERE prod_id = cat_id_exclude)
Если 1, то не включаю товар в результирующий список, иначе включаю.
Вроде все работает, но когда выбираю большое количество категорий-исключений, все виснет очень надолго. Что тут можно оптимизировать?
ЗЫ: Сильно не ворчите, я с БД никогда не работал. А тут подруга попросила цены у нее в магазине повысить, вот и тыкаюсь, а времени совсем мало...
ЗЫЗЫ: PHP, MySQL, Joomla, Virtuemart