【发布时间】:2018-09-14 04:14:01
【问题描述】:
我正在尝试从 TABLE_B varbinary 字段更新 TABLE_A varbinary 列。两个表中有 280,000 个文档。我已经使用 c# 代码将文件系统中的所有这些文档递归地插入到 TABLE_B varbinary 列中。大约花了 3 个小时才完成。现在我正在尝试使用此查询从 TABLE_B 更新 TABLE_A 行。它在 11 小时前开始,并且仍在运行。我在两列上都应用了索引。我很感激任何建议。
UPDATE T1
SET T1.doc = T2.doc
FROM TABLE_A T1
INNER JOIN TABLE_B T2
ON rtrim(ltrim(T1.path)) = rtrim(ltrim(T2.path))
【问题讨论】:
-
doc字段是实际文档的内容吗?桌子有多大?至少我会建议在此之前在表上执行 rtrim + ltrim,并将其从更新中删除,因为它很容易导致索引不被使用 -
是的。约 250GB。将尝试删除 rtrim、ltrim 并再次运行它。谢谢
-
了解索引会减慢插入和更新速度,但会加快读取速度,因此这里有一个问题。不过我would do this in batches。比如:dba.stackexchange.com/a/86520/95107
标签: c# sql-server tsql sql-server-2016