Vous pourriez éliminer les problèmes de performances liés au regroupement et au comptage si vous stockiez ces informations quelque part. Vous pouvez ajouter une colonne aux produits appelée total_categories
cela vous dira à combien de catégories le produit participe. Ensuite, vous pouvez simplement dire where total_categories = 4
. Cela peut être plus difficile à maintenir si les produits changent souvent de catégorie, car vous devez constamment mettre à jour correctement ce champ - et vous devez ensuite décider si vous souhaitez le faire dans le code de l'application, dans un déclencheur ou dans une procédure stockée. ...
Normalement, je ne pense pas que ce soit une très bonne idée de stocker ces métadonnées directement dans une table, mais si les performances sont vraiment si mauvais, cela pourrait valoir la peine d'être considéré.