我有以下声明:
UPDATE Table SET Column=Value WHERE TableID IN ({0})
我有一个逗号分隔的 TableID 列表,它可能很长(用于替换 {0})。我发现这比使用 SqlDataAdapter 更快,但是我也注意到如果命令文本太长,SqlCommand 可能会表现不佳。
有任何想法吗?
这是在 CLR 触发器内部。每个 SqlCommand 执行都会产生某种开销。我已经确定上述命令比 SqlDataAdapter.Update() 更好,因为 Update() 将更新单个记录,从而导致执行多个 SQL 语句。
...我最终做了以下事情(触发时间从 0.7 秒到 0.25 秒)
UPDATE T SET Column=Value FROM Table T INNER JOIN INSERTED AS I ON (I.TableID=T.TableID)