Ответ 1
Вы используете SUBSTRING. Это считывает фрагмент из ваших данных varbinary на сервере и возвращает только фрагмент клиенту.
Каков наиболее эффективный способ чтения только части двоичных данных из поля varbinary (MAX) (не используя FileStreams) в SQL Server 2008?
При записи данных в столбец функция VarBinary.Write() доступна в T-SQL, позволяя байтам записываться в поле поэтапно, но похоже, что для чтения данных не существует аналогичной функции.
Я знаю метод DataReader.GetBytes() в .Net, который выберет только те байты, которые вы просите, но имеет ли это накладные расходы на производительность? т.е. будет ли выбор в sqlserver считывать все байты в базе данных, а затем дать методу getBytes() все эти байты для того, чтобы он взял запрошенное подмножество байтов?
Спасибо за любую помощь.
Вы используете SUBSTRING. Это считывает фрагмент из ваших данных varbinary на сервере и возвращает только фрагмент клиенту.
Использование DataReader.GetBytes()
возможно без накладных расходов, afaik. Но вам нужно вызвать ExecuteReader()
с опцией CommandBehavior.SequentialAccess
.