Du kan eliminere ydeevneproblemerne ved at gruppere og tælle, hvis du gemte disse oplysninger et sted. Du kan tilføje en kolonne til Produkter kaldet total_categories
der vil fortælle dig, hvor mange kategorier produktet deltager i. Så kan du bare sige where total_categories = 4
. Dette kan være sværere at vedligeholde, hvis produkter ofte ændrer deres kategorier, fordi du konstant skal opdatere dette felt korrekt - og så skal du beslutte, om du vil gøre det i applikationskoden eller i en trigger eller i en lagret procedure ...
Normalt ville jeg ikke synes, det er en særlig god idé at gemme sådanne metadata direkte i en tabel, men hvis ydelsen virkelig er så slemt, kan det være værd at overveje.