खैर, "समूहों" में प्रत्येक पंक्ति के लिए, postgresql उत्पादों_श्रेणियों का पूर्ण स्कैन कर रहा है, जो अच्छा नहीं है। जरूरी नहीं कि एक कॉन्फ़िगरेशन समस्या हो, लेकिन शायद इस तरह की उपश्रेणियों को नेस्ट किए बिना क्वेरी को बताया जा सकता है?
SELECT count(DISTINCT "groups".id) AS count_all
FROM "groups"
WHERE exists(
select 1 from products p where groups.id = p.group_id
join products_categories pc on pc.product_id = p.id
where pc.category_id in (2,3)
) and groups.id <> 3
products_categories
भी करता है product_id
. पर एक अनुक्रमणिका है ?