SQL Server Varbinary (max): выберите подмножество байтов из поля varbinary

Каков наиболее эффективный способ чтения только части двоичных данных из поля varbinary (MAX) (не используя FileStreams) в SQL Server 2008?

При записи данных в столбец функция VarBinary.Write() доступна в T-SQL, позволяя байтам записываться в поле поэтапно, но похоже, что для чтения данных не существует аналогичной функции.

Я знаю метод DataReader.GetBytes() в .Net, который выберет только те байты, которые вы просите, но имеет ли это накладные расходы на производительность? т.е. будет ли выбор в sqlserver считывать все байты в базе данных, а затем дать методу getBytes() все эти байты для того, чтобы он взял запрошенное подмножество байтов?

Спасибо за любую помощь.

Ответ 1

Вы используете SUBSTRING. Это считывает фрагмент из ваших данных varbinary на сервере и возвращает только фрагмент клиенту.

Ответ 2

Использование DataReader.GetBytes() возможно без накладных расходов, afaik. Но вам нужно вызвать ExecuteReader() с опцией CommandBehavior.SequentialAccess.