Maison >base de données >tutoriel mysql >Comment puis-je calculer efficacement une colonne basée sur d'autres colonnes dans MySQL ?
Comment calculer efficacement des colonnes basées sur d'autres colonnes dans MySQL
MySQL 5.7.6 et supérieur introduit les colonnes générées (Colonnes générées), qui constituent un moyen efficace de calculer automatiquement la valeur des nouvelles colonnes en fonction des colonnes existantes dans la même table. Contrairement aux vues, les colonnes générées font partie de la définition de la table et sont automatiquement mises à jour lorsque les colonnes source changent.
Colonnes générées virtuellement et colonnes générées stockées
Les colonnes générées peuvent être virtuelles ou stockées :
Dans ce cas, stocker une colonne générée est plus approprié car la valeur calculée doit être disponible immédiatement lorsqu'un nouvel enregistrement est inséré ou qu'un enregistrement existant est mis à jour.
Mise en place des colonnes générées grâce au stockage
Supposons qu'un tableau ait deux colonnes : price
et quantity
, et que nous souhaitions ajouter une nouvelle colonne amount
dont la valeur est le produit de price
et quantity
. Les colonnes générées par le stockage peuvent être créées à l'aide de l'instruction SQL suivante :
<code class="language-sql">CREATE TABLE order_details ( price DOUBLE, quantity INT, amount DOUBLE AS (price * quantity) STORED );</code>
Une fois la colonne créée, amount
sera automatiquement calculée et stockée pour chaque ligne du tableau. Toute modification apportée à price
ou quantity
déclenchera une mise à jour de amount
.
Exemple contenant des données de tableau
Après avoir inséré quelques exemples de données :
<code class="language-sql">INSERT INTO order_details (price, quantity) VALUES(100,1),(300,4),(60,8);</code>
Le tableau ressemblera à ceci :
id | price | quantity | amount |
---|---|---|---|
1 | 100 | 1 | 100 |
2 | 300 | 4 | 1200 |
3 | 60 | 8 | 480 |
amount
Les colonnes seront automatiquement remplies et mises à jour selon les besoins, permettant un accès efficace aux valeurs calculées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!