代码之家  ›  专栏  ›  技术社区  ›  Moe Sisko

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

  •  3
  • Moe Sisko  · 技术社区  · 15 年前

    使用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为空,则返回0,否则返回1。

    这一切都很好,但我想知道它有多有效。也就是说,SQL Server是否需要将整个blob读取到其内存中,或者是否进行了一些优化,以便它只进行足够的读取,以确定blob是否为空?

    (对于本例,sp_tableoption“large value types out of row”选项设置为off)。

    2 回复  |  直到 15 年前
        1
  •  7
  •   gbn    15 年前

    它使用 NULL bitmap . 所以没有。

        2
  •  0
  •   TomTom    15 年前

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