2009-08-17 36 views
11

SQL Server 2008のvarbinary(MAX)フィールド(FileStreamsを使用しない)からバイナリデータの一部だけを読み取る最も効率的な方法は何ですか?SQL Server Varbinary(max):varbinaryフィールドのバイトのサブセットを選択します。

VarBinary.Write()関数をT-SQLで使用すると、バイトをフィールドに徐々に書き込むことができますが、データの読み取りに使用できる同様の機能はないようです。

私は、あなたが求めているバイトだけを選択する.NETのDataReader.GetBytes()メソッドを知っていますが、これはパフォーマンスオーバーヘッドを伴いますか?つまり、sqlserverのselectがデータベース内のすべてのバイトを読み込み、getBytes()メソッドにこれらのバイトをすべて渡して、要求されたバイトのサブセットを取るようにしますか?

ありがとうございました。

答えて

17

SUBSTRINGを使用します。これにより、サーバー上のvarbinaryデータからスニペットが読み取られ、スニペットがクライアントにのみ返されます。

+4

興味深い+1!私はVARBINARYカラムでSUBSTRINGを使うことができないと思いました! :-) –

+1

非常に便利な、ありがとう。 – gmn

+0

素晴らしい。誰がそれを考えていたでしょうか?下位部分文字列の力 –

1

オーバーヘッドなしで、DataReader.GetBytes()を使用することは可能です。しかし、オプションを使用してExecuteReader()に電話する必要があります。

関連する問題