Эффективность проверки для нулевого varbinary (max) столбца? - PullRequest
3 голосов
/ 12 мая 2010

Использование 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», который возвращает 0, если BLOB-объект равен нулю, иначе 1.

Все это прекрасно работает, но мне интересно, насколько это эффективно. т. е. нужно ли серверу SQL выполнять чтение всего большого двоичного объекта в его память, или есть какая-то оптимизация, чтобы он просто выполнял достаточно операций чтения, чтобы выяснить, является ли большой двоичный объект нулевым или нет?

(FWIW, опция sp_tableoption "типы большого значения вне строки" для этого примера установлена ​​в OFF).

Ответы [ 2 ]

7 голосов
/ 12 мая 2010

Используется растровое изображение NULL . Так что нет.

0 голосов
/ 12 мая 2010

На самом деле он не может прочитать большой двоичный объект, потому что нет никакого большого двоичного объекта для начала;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...