sql >> Databáze >  >> RDS >> Mysql

MySQL:Computed Column

Vypočítaný sloupec obvykle znamená hodnotu, kterou můžete vypočítat na řádek. MySQL to nepodporuje, ale SQL Server ano. Chcete-li například trvale uložit součet dvou sloupců:

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

Vy však chcete uložit agregaci, tedy hodnotu pro skupinu řádků. MySQL a SQL Server nepodporují materializované pohledy s agregací, ale Oracle ano:

create table Table1 (a int, b int);

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

S MySQL však nejblíže, co můžete udělat, je cronjob, který pravidelně naplňuje tabulku:

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

Tabulku můžete dotazovat jako materializovaný pohled; bude to stejně rychlé, ale není zaručeno, že bude aktuální.



  1. Vypočítejte časový rozdíl mezi dvěma časovými razítky v mysql

  2. Výkon VARCHAR vs. TEXT, když se data vejdou na řádek

  3. Jak optimalizovat použití klauzule OR při použití s ​​parametry (SQL Server 2008)

  4. Jak AUTO aktualizovat MySQL po vypršení platnosti pole časového razítka