Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quel est le coût des JOIN en SQL ? Et/ou, quel est le compromis entre performance et normalisation ?

La meilleure pratique consiste à toujours commencez par 3NF, puis n'envisagez la dénormalisation que si vous rencontrez un problème de performances spécifique.

La performance n'est qu'un des problèmes que vous rencontrez avec les bases de données. En dupliquant des données, vous courez le risque de laisser des données incohérentes dans votre base de données, annulant ainsi l'un des principes fondamentaux des bases de données relationnelles, la cohérence (le C en ACID ) .

Oui, les jointures ont un coût, il n'y a pas moyen de contourner cela. Cependant, le coût est généralement beaucoup moins élevé que vous ne le pensez et peut souvent être submergé par d'autres facteurs tels que les temps de transmission du réseau. En vous assurant que les colonnes pertinentes sont correctement indexées, vous pouvez éviter une grande partie de ces coûts.

Et n'oubliez pas le mantra de l'optimisation :mesurez, ne devinez pas ! Et mesurez dans un environnement de production. Et garder mesurer (et ajuster) périodiquement - l'optimisation n'est qu'une opération d'ensemble et d'oubli si votre schéma et vos données ne changent jamais (très peu probable).

La réversion pour les performances peut généralement être sécurisée en utilisant des déclencheurs pour maintenir la cohérence. Cela ralentira, bien sûr, vos mises à jour, mais peut encore permettre à vos sélections de s'exécuter plus rapidement.