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

MySQL :colonne calculée

Une colonne calculée signifie normalement une valeur que vous pouvez calculer par ligne. MySQL ne le supporte pas, mais SQL Server le fait. Par exemple, pour stocker la somme de deux colonnes de manière permanente :

create table Table1 (a int, b int, c as a+b persisted)

Cependant, vous cherchez à stocker un agrégat, c'est-à-dire une valeur pour un groupe de lignes. MySQL et SQL Server ne prennent pas en charge les vues matérialisées avec un agrégat, contrairement à Oracle :

create table Table1 (a int, b int);

create materialized view View1 as
select  a
,       count(*) as Cnt
from    Table1
group by
    a;

Avec MySQL cependant, le plus proche que vous puissiez faire est un cronjob qui remplit périodiquement une table :

truncate table Table1Summary;
insert Table1Summary (a, Cnt) select a, count(*) from Table1;

Vous pouvez interroger la table comme une vue matérialisée ; il sera aussi rapide, mais pas garanti d'être à jour.