Když vytvoříte vypočítaný sloupec na serveru SQL Server, máte možnost jej označit jako „trvalý“. Trvalý vypočítaný sloupec je ten, který je fyzicky uložen v tabulce. Pokud neurčíte, že je trvalý, pak se hodnota sloupce vypočítá pokaždé, když na něj spustíte dotaz.
Můžete se zeptat na sys.computed_columns
zobrazení systémového katalogu, abyste zjistili, zda je vypočítaný sloupec označen jako trvalý.
Příklad 1 – Kontrola jednoho vypočítaného sloupce
Zde je příklad, který jsem spustil ve svém testovacím prostředí. V tomto případě kontrolujem vypočítaný sloupec s názvem TotalValue
.
SELECT is_persisted FROM sys.computed_columns WHERE name = 'TotalValue';
Výsledek:
+----------------+ | is_persisted | |----------------| | 1 | +----------------+
V tomto případě sloupec je přetrvával.
V případě, že máte více počítaných sloupců se stejným názvem, můžete také přidat název tabulky do WHERE
klauzule:
SELECT is_persisted FROM sys.computed_columns WHERE name = 'TotalValue' AND OBJECT_NAME(object_id) = 'Products';
Příklad 2 – Vrátit všechny vypočítané sloupce
V tomto příkladu vrátím všechny vypočítané sloupce spolu s jejich is_persisted
hodnoty.
SELECT OBJECT_NAME(object_id) AS [Table], name AS [Computed Column], is_persisted FROM sys.computed_columns;
Výsledek:
+----------+-------------------+----------------+ | Table | Computed Column | is_persisted | |----------+-------------------+----------------| | Person | FullName | 0 | | Products | TotalValue | 1 | +----------+-------------------+----------------+
Příklad 3 – Zahrnout schéma
V tomto příkladu se připojím k sys.objects
zobrazení zahrnout schéma do výsledků.
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;
Výsledek:
+----------+----------+-------------------+----------------+ | Schema | Table | Computed Column | is_persisted | |----------+----------+-------------------+----------------| | dbo | Person | FullName | 0 | | dbo | Products | TotalValue | 1 | +----------+----------+-------------------+----------------+