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