Quando crei una colonna calcolata in SQL Server, hai la possibilità di contrassegnarla come "persistente". Una colonna calcolata persistente è una colonna fisicamente archiviata nella tabella. Se non specifichi che è persistente, il valore della colonna verrà calcolato ogni volta che esegui una query su di essa.
Puoi interrogare sys.computed_columns
vista del catalogo di sistema per scoprire se una colonna calcolata è contrassegnata come persistente.
Esempio 1 – Verifica di una colonna calcolata
Ecco un esempio che ho eseguito nel mio ambiente di test. In questo caso, sto controllando una colonna calcolata chiamata TotalValue
.
SELECT is_persisted FROM sys.computed_columns WHERE name = 'TotalValue';
Risultato:
+----------------+ | is_persisted | |----------------| | 1 | +----------------+
In questo caso la colonna è persiste.
Nel caso in cui tu abbia più colonne calcolate con lo stesso nome, puoi anche aggiungere il nome della tabella a WHERE
clausola:
SELECT is_persisted FROM sys.computed_columns WHERE name = 'TotalValue' AND OBJECT_NAME(object_id) = 'Products';
Esempio 2 – Restituisci tutte le colonne calcolate
In questo esempio restituisco tutte le colonne calcolate, insieme al loro is_persisted
valori.
SELECT OBJECT_NAME(object_id) AS [Table], name AS [Computed Column], is_persisted FROM sys.computed_columns;
Risultato:
+----------+-------------------+----------------+ | Table | Computed Column | is_persisted | |----------+-------------------+----------------| | Person | FullName | 0 | | Products | TotalValue | 1 | +----------+-------------------+----------------+
Esempio 3:includi lo schema
In questo esempio mi unisco a sys.objects
visualizzare per includere lo schema nei risultati.
SELECT SCHEMA_NAME(o.schema_id) AS [Schema], OBJECT_NAME(cc.object_id) AS [Table], cc.name AS [Computed Column], cc.is_persisted FROM sys.computed_columns cc INNER JOIN sys.objects o ON o.object_id = cc.object_id;
Risultato:
+----------+----------+-------------------+----------------+ | Schema | Table | Computed Column | is_persisted | |----------+----------+-------------------+----------------| | dbo | Person | FullName | 0 | | dbo | Products | TotalValue | 1 | +----------+----------+-------------------+----------------+