Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да проверите дали изчислената колона е „постоянна“ в SQL Server

Когато създавате изчислена колона в SQL Server, имате опцията да я маркирате като „постоянна“. Постоянна изчислена колона е тази, която се съхранява физически в таблицата. Ако не посочите, че е запазена, тогава стойността на колоната ще се изчислява всеки път, когато изпълнявате заявка към нея.

Можете да направите заявка за sys.computed_columns изглед на системния каталог, за да разберете дали изчислена колона е маркирана като постоянна.

Пример 1 – Проверка на една изчислена колона

Ето пример, който пуснах в моята тестова среда. В този случай проверявам изчислена колона, наречена TotalValue .

SELECT is_persisted
FROM sys.computed_columns
WHERE name = 'TotalValue';

Резултат:

+----------------+
| is_persisted   |
|----------------|
| 1              |
+----------------+

В този случай колоната е продължи.

В случай, че имате няколко изчислени колони с едно и също име, можете също да добавите името на таблицата към WHERE клауза:

SELECT is_persisted
FROM sys.computed_columns
WHERE name = 'TotalValue'
AND OBJECT_NAME(object_id) = 'Products';

Пример 2 – Връщане на всички изчислени колони

В този пример връщам всички изчислени колони, заедно с техния is_persisted стойности.

SELECT 
  OBJECT_NAME(object_id) AS [Table],
  name AS [Computed Column],
  is_persisted
FROM sys.computed_columns;

Резултат:

+----------+-------------------+----------------+
| Table    | Computed Column   | is_persisted   |
|----------+-------------------+----------------|
| Person   | FullName          | 0              |
| Products | TotalValue        | 1              |
+----------+-------------------+----------------+

Пример 3 – Включване на схемата

В този пример се присъединявам с sys.objects изглед, за да включите схемата в резултатите.

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;

Резултат:

+----------+----------+-------------------+----------------+
| Schema   | Table    | Computed Column   | is_persisted   |
|----------+----------+-------------------+----------------|
| dbo      | Person   | FullName          | 0              |
| dbo      | Products | TotalValue        | 1              |
+----------+----------+-------------------+----------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Спрете да карате SQL Server да ви върши мръсната работа

  2. Съхранена процедура - връщане на идентичност като изходен параметър или скалар

  3. Какво е IN логически оператор в SQL Server - SQL Server / TSQL урок, част 122

  4. Някакъв начин за вмъкване или актуализиране на SQLBulkCopy, ако съществува?

  5. Как да създадете база данни в SQL Server