Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Memeriksa apakah Kolom yang Dihitung "Bertahan" di SQL Server

Saat Anda membuat kolom yang dihitung di SQL Server, Anda memiliki opsi untuk menandainya sebagai "bertahan". Kolom komputasi yang bertahan adalah kolom yang secara fisik disimpan dalam tabel. Jika Anda tidak menentukan bahwa itu bertahan, maka nilai kolom akan dihitung setiap kali Anda menjalankan kueri terhadapnya.

Anda dapat menanyakan sys.computed_columns tampilan katalog sistem untuk mengetahui apakah kolom yang dihitung ditandai sebagai tetap ada.

Contoh 1 – Memeriksa Satu Kolom yang Dihitung

Berikut adalah contoh yang saya jalankan di lingkungan pengujian saya. Dalam hal ini, saya memeriksa kolom yang dihitung yang disebut TotalValue .

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

Hasil:

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

Dalam hal ini kolom adalah bertahan.

Jika Anda memiliki beberapa kolom yang dihitung dengan nama yang sama, Anda juga dapat menambahkan nama tabel ke WHERE klausa:

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

Contoh 2 – Mengembalikan Semua Kolom yang Dihitung

Dalam contoh ini saya mengembalikan semua kolom yang dihitung, bersama dengan is_persisted nilai.

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

Hasil:

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

Contoh 3 – Sertakan Skema

Dalam contoh ini saya bergabung dengan sys.objects tampilan untuk menyertakan skema dalam hasil.

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;

Hasil:

+----------+----------+-------------------+----------------+
| 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. Log transaksi untuk database sudah penuh

  2. 5 Manfaat Pemantauan Kinerja Basis Data Proaktif

  3. Dapatkan Nilai Batas untuk Tabel yang Dipartisi di SQL Server (T-SQL)

  4. Cara Membuat Rencana Eksekusi di SQL Server

  5. Klausa WHERE vs ON saat menggunakan GABUNG