检查null varbinary(max)列的效率?

Moe*_*sko 3 t-sql sql-server sql-server-2005 sql-server-2008

使用SQL Server 2008.

示例表:

CREATE table dbo.blobtest
(id int primary key not null,
name nvarchar(200) not null, 
data varbinary(max) null)
Run Code Online (Sandbox Code Playgroud)

示例查询:

select id, name, 
cast((case when data is null then 0 else 1 end) as bit) as DataExists 
from dbo.blobtest 
Run Code Online (Sandbox Code Playgroud)

现在,查询需要返回一个"DataExists"列,如果blob为null,则返回0,否则返回1.

这一切都很好,但我想知道它的效率如何.即,SQL服务器是否需要将整个blob读入其内存,或者是否有一些优化,以便它只进行足够的读取以确定blob是否为空?

(FWIW,对于此示例,sp_tableoption"超出行的大值类型"选项设置为OFF).

gbn*_*gbn 7

它使用NULL位图.所以不行.