Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:colonna calcolata

Una colonna calcolata normalmente indica un valore che puoi calcolare per riga. MySQL non lo supporta, ma SQL Server lo fa. Ad esempio, per memorizzare in modo permanente la somma di due colonne:

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

Tuttavia, stai cercando di archiviare un aggregato, ovvero un valore per un gruppo di righe. MySQL e SQL Server non supportano le viste materializzate con un aggregato, ma Oracle lo fa:

create table Table1 (a int, b int);

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

Con MySQL, tuttavia, la cosa più vicina che puoi fare è un cronjob che popola periodicamente una tabella:

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

Puoi interrogare la tabella come una vista materializzata; sarà altrettanto veloce, ma non è garantito che sia aggiornato.