sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man kontrollerar om en beräknad kolumn är "beständig" i SQL Server

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              |
+----------+----------+-------------------+----------------+

  1. JSON_VALUE() Exempel i SQL Server (T-SQL)

  2. MySql-tabell Infoga om den inte existerar annars uppdatera

  3. Hur man benchmarkar PostgreSQL-prestanda

  4. Vad betyder mysql-fel 1025 (HY000):Fel vid byte av namn på './foo' (fel nr:150)?