PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:esiste vs join sinistro

Bene, per ogni riga in "gruppi", postgresql esegue una scansione completa di product_categories, il che non va bene. Non necessariamente un problema di configurazione, ma forse la query potrebbe essere dichiarata senza nidificare sottoquery del genere?

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

Fa anche products_categories avere un indice su product_id ?