Wir haben einen SQL-Generator, der generische SQL-Bedingungsanweisungen für bestimmte Felder ausgibt (was zur Diskussion: Wir werden als kennzeichnen myField
).
Wenn myField
es sich um einen Typ handelt NVARCHAR
, können wir dieses Feld mit einer Zeichenfolge wie folgt vergleichen : myField = 'foo'
.
Dies funktioniert jedoch nicht für Felder vom Typ NTEXT
. Wir müssen also den Vergleich mit einer Besetzung anstellen : CAST(myField as NVARCHAR(MAX)) = 'foo'
. Dies funktioniert in der Tat, wenn myField
es sich um einen Typ handelt NVARCHAR
oder NTEXT
.
Was ist der Leistungshit, wenn die oben genannte Besetzung auf einem Feld ausgeführt wird, das bereits vom Typ ist NVARCHAR
? Ich hoffe, dass SQL Server intelligent genug ist, um dynamisch zu erkennen, dass myField
es sich bereits um einen Typ handelt NVARCHAR
(der effektiv CAST
zu einem No-Op wird).