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

时间:2010-05-12 04:18:55

标签: sql-server sql-server-2005 tsql 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)

示例查询:

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

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

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

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

2 个答案:

答案 0 :(得分:7)

它使用NULL bitmap。所以没有。

答案 1 :(得分:0)

实际上它无法读取blob,因为没有blob可以开始;)