我們有一個表或NULL或「Accepted」作爲值。我的查詢返回大約250行。ISNULL減慢查詢速度
如果我添加一個WHERE條件的 -
AND Description = 'Accepted'
我的250行返回2秒。
但是,如果我添加一個WHERE條件的 -
ISNULL(Description, '') = 'Accepted'
我的250行中47秒返回。
有沒有人遇到過使用ISNULL函數的性能問題?不幸的是,我在編程上限於此時必須使用ISNULL。
我們有一個表或NULL或「Accepted」作爲值。我的查詢返回大約250行。ISNULL減慢查詢速度
如果我添加一個WHERE條件的 -
AND Description = 'Accepted'
我的250行返回2秒。
但是,如果我添加一個WHERE條件的 -
ISNULL(Description, '') = 'Accepted'
我的250行中47秒返回。
有沒有人遇到過使用ISNULL函數的性能問題?不幸的是,我在編程上限於此時必須使用ISNULL。
您還可以完全利用繞過功能:
WHERE (Description = 'Accepted' OR Description IS NULL)
如果你想在WHERE條件使用,使用IS NULL,不ISNULL
SELECT field FROM table WHERE description is null
或者相反
SELECT場FROM表WHERE NOT描述爲空
在WHERE條件犯規利用
ISNULL(Description, '') = 'Accepted'
在這情況下,任何意義。如果描述爲空,原始where子句中的
AND Description = 'Accepted'
仍然足夠。 您基本上在描述爲空的每一行中比較''和'已接受'。
請詳細說明您試圖完成的查詢,我認爲您可能會走錯方向。
+1指出出血很明顯:當NULL與實際相同時,評估爲false/unknown。我可能也忽略了這一點。 – gbn
出於興趣,你是如何「編程限制」? –