假設在SQL Server中的表定義如下:在使用空列WHERE子句
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的靜態代碼分析儀產生以下錯誤:
Warning : SR0007 : Microsoft.Performance : Nullable columns can cause final results to be evaluated as NULL for the predicate.
我在這裏沒有看到問題。錯誤與績效有關; MSDN說我應該使用ISNULL() - 但是一個等於NULL的比較總是爲false,對吧?我錯過了什麼,或者是錯誤的警告?
會發生什麼[忽略此警告。該建議對性能不利](http://stackoverflow.com/questions/7471740/does-wrapping-nullable-columns-in-isnull-cause-table-scans) – 2013-07-02 11:58:31