SQL Server Varbinary(max):从 varbinary 字段中选择字节子集
在 SQL Server 2008 中从 varbinary(MAX) 字段(不使用 FileStreams)读取部分二进制数据的最有效方法是什么?
将数据写入列时,T-SQL 中提供了 VarBinary.Write() 函数,允许将字节增量写入字段,但似乎没有类似的函数可用于读取数据。
我知道 .Net 中的 DataReader.GetBytes() 方法只会选择您要求的字节,但这会带来性能开销吗?也就是说,sqlserver 中的 select 会读取数据库中的所有字节,然后为 getBytes() 方法提供所有这些字节,以便它获取从它们请求的字节子集吗?
感谢您的任何帮助。
What is the most efficient way of reading just part of the binary data from a varbinary(MAX) field (not using FileStreams) in SQL Server 2008?
When writing data to the column the VarBinary.Write() function is available in T-SQL, allowing bytes to be written to the field incrementally, but there doesn't appear to be a similar function available for reading data.
I know of the DataReader.GetBytes() method in .Net which will select just the bytes you ask for, but does this carry a performance overhead with it? i.e. will the select in sqlserver read all of the bytes in the database, and then give the getBytes() method all of these bytes for it to take the subset of bytes requested from them?
Thanks for any help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您使用SUBSTRING。这会从服务器上的 varbinary 数据中读取一个片段,并且仅将该片段返回给客户端。
You use SUBSTRING. This reads a snippet from your varbinary data on the server, and only returns the snippet to the client.
据我所知,使用 DataReader.GetBytes() 是可以没有开销的。但您必须使用
CommandBehavior.SequentialAccess
选项调用ExecuteReader()
。Using
DataReader.GetBytes()
is possible without overhead, afaik. But you'll have to call theExecuteReader()
with theCommandBehavior.SequentialAccess
option.