15

SQL Server 2008 で (FileStreams を使用せずに) varbinary(MAX) フィールドからバイナリ データの一部だけを読み取る最も効率的な方法は何ですか?

列にデータを書き込む場合、T-SQL で VarBinary.Write() 関数を使用して、フィールドにバイトをインクリメンタルに書き込むことができますが、データの読み取りに使用できる同様の関数はないようです。

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

助けてくれてありがとう。

4

2 に答える 2

23

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

[SUBSTRING] SQL Server の文字、バイナリ、テキスト、またはイメージ式の一部を返します。 [it]式がサポートされているバイナリ データ型のいずれかである場合、バイナリ データを返します。返される文字列は、表に示されている例外を除いて、指定された式と同じ型です。

于 2009-08-17T17:00:40.433 に答える
1

DataReader.GetBytes()オーバーヘッドなしで使用できます。ExecuteReader()ただし、オプションを指定して呼び出す必要がありCommandBehavior.SequentialAccessます。

于 2009-12-21T20:21:03.503 に答える