我在我的查询中使用输出已删除。*我有数百万行数据。
使用它有什么不利之处吗?
我的查询是:
DELETE from Table1
OUTPUT deleted.* INTO Table2
FROM Table4 MH
inner join Table3 M
on MH.id = M.Mid
where condition
它完美无缺。但这会锁定整个桌子吗? 这是一个好方法吗?
答案 0 :(得分:0)
您确实需要将已删除的行写入另一个表,这可能会增加delete语句运行的时间。但是对于删除而言,使用输出子句而不是没有的锁应该是相同的(可能是不同的持续时间)。在非生产环境中使用扩展事件会话自行验证它!