Предположим, что определение таблицы в SQL Server выглядит следующим образом:
CREATE TABLE MyTable (
Id UNIQUEIDENTIFIER NULL,
Info VARCHAR(MAX)
)
И запрос:
DECLARE @id UNIQUEIDENTIFIER
DECLARE @info VARCHAR(MAX)
IF @id IS NOT NULL
BEGIN
SELECT @info = Info
FROM MyTable
WHERE Id = @id
END
В этом случае статический анализатор кода Visual Studio выдает следующую ошибку:
Предупреждение : SR0007 : Microsoft.Performance : Столбцы, допускающие значение NULL, могут привести к тому, что окончательные результаты будут оцениваться как NULL для предиката.
Я не вижу здесь проблемы. Ошибка связана с производительностью; MSDN говорит, что я должен использовать ISNULL(), но сравнение равенства с NULL всегда ложно, верно? Я что-то упустил, или предупреждение просто неправильное?