När du skapar en beräknad kolumn i SQL Server har du möjlighet att flagga den som "beständig". En beständig beräknad kolumn är en som lagras fysiskt i tabellen. Om du inte anger att den har bestått kommer kolumnens värde att beräknas varje gång du kör en fråga mot den.
Du kan fråga sys.computed_columns
systemkatalogvy för att ta reda på om en beräknad kolumn är markerad som beständig.
Exempel 1 – Kontrollera en beräknad kolumn
Här är ett exempel som jag körde i min testmiljö. I det här fallet kontrollerar jag en beräknad kolumn som heter TotalValue
.
SELECT is_persisted FROM sys.computed_columns WHERE name = 'TotalValue';
Resultat:
+----------------+ | is_persisted | |----------------| | 1 | +----------------+
I det här fallet är kolumnen är kvarstod.
Om du har flera beräknade kolumner med samma namn kan du också lägga till tabellnamnet i WHERE
klausul:
SELECT is_persisted FROM sys.computed_columns WHERE name = 'TotalValue' AND OBJECT_NAME(object_id) = 'Products';
Exempel 2 – Returnera alla beräknade kolumner
I det här exemplet returnerar jag alla beräknade kolumner, tillsammans med deras is_persisted
värden.
SELECT OBJECT_NAME(object_id) AS [Table], name AS [Computed Column], is_persisted FROM sys.computed_columns;
Resultat:
+----------+-------------------+----------------+ | Table | Computed Column | is_persisted | |----------+-------------------+----------------| | Person | FullName | 0 | | Products | TotalValue | 1 | +----------+-------------------+----------------+
Exempel 3 – Inkludera schemat
I det här exemplet går jag ihop med sys.objects
visa för att inkludera schemat i resultaten.
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;
Resultat:
+----------+----------+-------------------+----------------+ | Schema | Table | Computed Column | is_persisted | |----------+----------+-------------------+----------------| | dbo | Person | FullName | 0 | | dbo | Products | TotalValue | 1 | +----------+----------+-------------------+----------------+