Conseil Postgres : « Les jointures sont gratuites » est un mythe, mais elles peuvent s’avérer utiles. Évitez de dénormaliser les tables et ne le faites qu’en cas d’absolue nécessité, pour répondre aux besoins des utilisateurs. Les développeurs tenteront de vous convaincre de dénormaliser « parce que c’est plus rapide », mais refusez systématiquement jusqu’à ce que de vrais utilisateurs se plaignent.
L'autre raison pour laquelle les développeurs insistent sur la dénormalisation plutôt que sur les jointures est la complexité des requêtes. Ils veulent écrire des requêtes plus claires et plus lisibles, sans multiplier les jointures. La solution est toujours une variante de « git gud » (apprenez à maîtriser le SQL). On fera des jointures à tout va jusqu'à ce que ce soit absolument impossible.
« Utilise juste une jointure » est l'une des « Jonismes » dont @lisamahapatra se moque sans cesse parce que je le sors à chaque appel où l'on parle du modèle de données. Tout le monde sait que je vais le dire… Je crois même qu'ils essaient de me piéger.
@lisamahapatra Ce sujet est inspiré par le fait que je suis en train de dénormaliser mes données pour gagner en performance. Les tables concernées sont désormais suffisamment volumineuses et leur modèle de données suffisamment stable pour qu'une dénormalisation stratégique permette d'obtenir des gains validables par EXPLAIN ANALYZEa.
@lisamahapatra Oui, les vues sont très utiles SI le modèle de données est stable et qu'il s'agit bien d'un problème d'expérience utilisateur et non de performance. Lorsque le modèle est stabilisé et que nous n'avons plus besoin de la flexibilité des jointures dans le code, il fx.com/jannotti/statu… la dénormalisation (pour la performance) et les vues (pour l'expérience utilisateur).