Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:coluna computada


Uma coluna computada normalmente significa um valor que você pode calcular por linha. O MySQL não suporta isso, mas o SQL Server sim. Por exemplo, para armazenar a soma de duas colunas permanentemente:
create table Table1 (a int, b int, c as a+b persisted)

No entanto, você deseja armazenar um agregado, ou seja, um valor para um grupo de linhas. MySQL e SQL Server não suportam visualizações materializadas com um agregado, mas o Oracle suporta:
create table Table1 (a int, b int);

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

No entanto, com o MySQL, o mais próximo que você pode fazer é um cronjob que preenche periodicamente uma tabela:
truncate table Table1Summary;
insert Table1Summary (a, Cnt) select a, count(*) from Table1;

Você pode consultar a tabela como uma visão materializada; será tão rápido, mas não garantido que esteja atualizado.