为什么删除语句会影响附加行?

时间:2018-11-21 08:01:16

标签: sql-server join sql-execution-plan

更新

我发现,包括实际的执行计划是添加额外的行影响警告的罪魁祸首。

原始问题:

我要删除成百上千条记录中的数十万条不必要的记录。

我的问题是,每100行删除指令出现一条警告(受影响的1行),我想知道这可能是什么。

我的表没有任何触发器,也没有与级联的关系。因此,您是否知道其他可能影响额外行的内容?

DECLARE @LOOP bit = 1

WHILE @LOOP = 1
BEGIN
  BEGIN TRANSACTION 

  DELETE TOP (100) FICHERO_ASIGNACION
  FROM FICHERO_ASIGNACION 
       INNER JOIN FICHERO ON FICHERO.FIC_KEY = FICHERO_ASIGNACION.FIC_KEY
  WHERE FAT_KEY = 4 and 
        CLI_COD is null and
        FIC_BUC = 'prd.factura-venta'

  PRINT '100 unneeded assignments deleted'
  IF @@ROWCOUNT = 0 SET @LOOP = 0
  COMMIT TRANSACTION
END

这是结果:

(100 rows affected)

(1 row affected)
100 unneeded assignments deleted
(100 rows affected)

(1 row affected)
100 unneeded assignments deleted
(100 rows affected)

(1 row affected)
100 unneeded assignments deleted
...
...

此外,在执行计划中,我看不到任何对其他表或其他搜索的引用。

enter image description here

谢谢。

2 个答案:

答案 0 :(得分:2)

通过显示执行计划,似乎引发了额外的行警告。

我已经删除了“包括实际执行计划”,现在它不显示任何其他受影响的行。

谢谢大家。

答案 1 :(得分:0)

对我来说很好。检查here。 桌上有触发器吗?。