У нас есть генератор SQL, который генерирует условные операторы SQL в общем случае для указанных полей (которые для обсуждения: мы будем обозначать как myField
).
Если myField
имеет тип NVARCHAR
, мы можем сделать сравнение указанного поля со строкой , как так: myField = 'foo'
.
Однако это не работает для полей типа NTEXT
. Таким образом, мы должны сделать сравнение с броском: CAST(myField as NVARCHAR(MAX)) = 'foo'
. Это на самом деле будет работать, если myField
имеет тип NVARCHAR
или NTEXT
.
Какова производительность при выполнении вышеупомянутого приведения на поле, которое уже имеет тип NVARCHAR
? Я надеюсь, что SQL Server достаточно умен, чтобы динамически распознавать, что myField
уже имеет тип NVARCHAR
(эффективно превращая его CAST
в неоперативный).