Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:Berechnete Spalte

Eine berechnete Spalte bedeutet normalerweise einen Wert, den Sie pro Zeile berechnen können. MySQL unterstützt das nicht, aber SQL Server schon. Zum Beispiel, um die Summe zweier Spalten dauerhaft zu speichern:

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

Sie möchten jedoch ein Aggregat speichern, also einen Wert für eine Gruppe von Zeilen. MySQL und SQL Server unterstützen keine materialisierten Ansichten mit einem Aggregat, aber Oracle schon:

create table Table1 (a int, b int);

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

Bei MySQL ist das Beste, was Sie tun können, ein Cronjob, der regelmäßig eine Tabelle füllt:

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

Sie können die Tabelle wie eine materialisierte Ansicht abfragen; es wird so schnell sein, aber es ist nicht garantiert, dass es auf dem neuesten Stand ist.