Sql server 2008 ISNULL会减慢查询速度

Sql server 2008 ISNULL会减慢查询速度,sql-server-2008,Sql Server 2008,我们有一个表,它的值为NULL或“Accepted”。我的查询返回大约250行 如果我添加一个where条件- AND Description = 'Accepted' ISNULL(Description, '') = 'Accepted' 我的250行在2秒内返回 但是,如果我添加一个where条件- AND Description = 'Accepted' ISNULL(Description, '') = 'Accepted' 我的250行在47秒内返回 是否有人在使用ISNUL

我们有一个表,它的值为NULL或“Accepted”。我的查询返回大约250行

如果我添加一个where条件-

AND Description = 'Accepted'
ISNULL(Description, '') = 'Accepted'
我的250行在2秒内返回

但是,如果我添加一个where条件-

AND Description = 'Accepted'
ISNULL(Description, '') = 'Accepted'
我的250行在47秒内返回


是否有人在使用ISNULL函数时遇到性能问题?不幸的是,在编程上,我现在只能使用ISNULL。

当在函数中包含一个字段时,它会改变优化器的运行方式,并强制优化器忽略索引


请参见此处:

您也可以使用以下方法完全绕过这些函数:


WHERE(Description='Accepted'或Description为NULL)

如果您试图在WHERE条件下使用它,use为NULL,而不是ISNULL

从描述为空的表中选择字段

还是相反

从NOT description为null的表中选择字段

使用

在这种情况下,你的where条件没有任何意义。如果描述为空,则为的原始where子句

AND Description = 'Accepted'
这样就足够了。 基本上,在描述为null的每一行中,都将“”与“Accepted”进行比较


请详细说明您试图通过查询实现什么,我认为您可能走错了方向。

出于兴趣,您如何“编程限制”?+1指出显而易见的问题:当为NULL时,两者的计算结果都为false/unknown,这实际上是相同的。我可能也忽略了这一点。