我们有一个表或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
出于兴趣,你是如何“编程限制”? –