在 where 条件下检查 NULL varchar(max)

Posted

技术标签:

【中文标题】在 where 条件下检查 NULL varchar(max)【英文标题】:Check for NULL varchar(max) in where condition 【发布时间】:2018-11-21 14:25:10 【问题描述】:

在 SQL Server 2008 R2 中,我正在尝试运行此查询

select 
    count(ID_FILE)
from 
    MY_FILES
where 
    DOCUMENT IS NULL

DOCUMENTfilestream varchar(max) blob 列。

查询

select ID_FILE
from MY_FILES

2秒后返回,如果我加上where条件,就无穷无尽了。

这个表总共有20GB的blob,是不是IS NULL勾选“傻瓜”,所以必须扫描所有20GB的数据来检查NULLs?

谢谢。

【问题讨论】:

【参考方案1】:

拉布拉卡,

以下帖子可能对您有所帮助:

Empty BLOBS - SQL Server

【讨论】:

您好,谢谢。我尝试按照帖子中的建议将 'where DOCUMENT IS NULL' 替换为 'where datalength(DOCUMENT) = 0',无论如何它都非常慢。不知何故,我希望检查 NULL 的速度非常快。

以上是关于在 where 条件下检查 NULL varchar(max)的主要内容,如果未能解决你的问题,请参考以下文章

在sql的where条件下怎么加判断语句?

如果不为空,SQL 将在 Where 中包含条件

Oracle left outer join with is null in JOIN vs WHERE 条件(示例)

sql的where条件中是不是null相关条件怎么写

与where子句查询的Eloquent嵌套关系在false条件下返回集合

在 where 条件下用 " 续集换行列