Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So erkennen Sie, ob eine berechnete Spalte in SQL Server deterministisch ist

Wenn Sie eine berechnete Spalte in SQL Server erstellen, ist der Ausdruck, den Sie für die Spalte verwenden, entweder deterministisch oder nicht deterministisch. Dies kann Auswirkungen haben, z. B. ob Sie es in einem Index verwenden oder als „fortgesetzt“ kennzeichnen können.

Eine deterministische Spalte ist eine Spalte, die denselben Wert für einen bestimmten Satz von Eingabewerten und bei demselben Status der Datenbank zurückgibt. Eine nicht deterministische Spalte kann einen anderen Wert zurückgeben, selbst wenn sie dieselbe Eingabe erhält, selbst wenn der Datenbankstatus gleich bleibt. Beispielsweise ist eine Funktion, die das aktuelle Datum zurückgibt, nicht deterministisch, da sie jeden Tag einen anderen Wert zurückgibt.

Sie können die COLUMNPROPERTY() verwenden Funktion mit IsDeterministic Argument, um herauszufinden, ob eine berechnete Spalte deterministisch ist oder nicht.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung.

SELECT 
  COLUMNPROPERTY(
    OBJECT_ID('dbo.Products'), 
    'TotalValue', 
    'IsDeterministic') 
    AS IsDeterministic;

Ergebnis:

+-------------------+
| IsDeterministic   |
|-------------------|
| 1                 |
+-------------------+

In diesem Fall der TotalValue Spalte aus dbo.Products Tabelle ist deterministisch. Wenn dies nicht der Fall wäre, wäre das Ergebnis 0 .

Der IsDeterministic -Eigenschaft gilt nur für berechnete Spalten und Ansichtsspalten.