SQL Server:追加VARBINARY性能较慢

本文关键字:性能 VARBINARY 追加 Server SQL | 更新日期: 2023-09-27 18:08:26

我正在使用64KB的迭代将文件的字节添加到SQL Server数据库的VARBINARY字段中。

然而,我认为它将整个字节对象带回到内存中,附加字节,然后更新行将导致性能下降

用于更新VARBINARY字段的SQL语句

long milliseconds = DateTime.Now.Ticks; 
ExecuteSqlCommand("UPDATE dbo.table SET Item = Item + @item WHERE id = @id", new SqlParameter("@item", append), new SqlParameter("@id", id));
long millisecondsAfter = DateTime.Now.Ticks;
long timeTook = millisecondsAfter - milliseconds;

我这样说的原因是因为毫秒(TimeTook)值在每次循环后都更大。

所以问题是,有没有一种更快的方法,显然更有效的方法来做上面的查询?

——编辑(回答)——

感谢下面的答案,这是一个新的查询,工作得更好

UPDATE dbo.table SET Item.WRITE(@item, NULL, 0) WHERE id = @id", new SqlParameter("@item", append), new SqlParameter("@id", id));

谢谢

SQL Server:追加VARBINARY性能较慢

这基本上就是当人们不阅读文档时所发生的事情。

您可以直接通过SQL进行部分更新,而无需加载整个对象。

http://msdn.microsoft.com/en-us/library/ms177523%28v=sql.105%29.aspx

是update语句的语法。请注意"。write"

让我引用;

。WRITE (expression,@Offset,@Length)指定"column_name"的值需要修改。表达式取代@Length从@Offset (column_name)开始的单位。只有列Varchar (max)、nvarchar(max)或varbinary(max)可以使用这一条款。column_name不能为NULL,也不能用表名或表别名。

SQL Server在这里不优化二进制追加大小写。事实上,这导致二次性能。(有人可能会说SQL Server 应该优化这个。)

使用UPDATE语句的WRITE子句实现流写和稳定的性能