La question des jointures et la performance revient souvent.
Toutefois j'ai une question particulière pour laquelle j'ai du mal à trouver un retour d'expérience.
Prenons l'exemple d'une table contenant des informations sur de nombreux produits.
Ces produits disposent d'infos de base identiques pour tous les produits. Ce sont donc des colonnes de la table.
Ces produits peuvent aussi avoir des attributs supplémentaires très variables.
Pour stocker ces attributs, on a plusieurs possibilités :
- utiliser une table d'attributs liées à la table produit
- utiliser un champ d'attributs jsonb en tant que colonne de la table produit
Ma question concerne les recherches au sein de la table produit sur un nombre très grands de produits et avec environ 50 attributs par produit.
Imaginons que l'on souhaite trouver tous les produits ayant l'attribut couleur à la valeur rouge.
Aura-t-on de meilleures performances avec une architecture utilisant 2 tables ou avec une seule table (et un index GIN sur la colonne des attributs jsonb) ?
Et si différence il y a, quelle est son ordre de grandeur ?
Merci par avance.
Partager