删除存在的地方

Delete Where Exists

delete from VA_demo_setup_NCSC_temp 
    where exists
    (select *
     from VA_demo_setup_enrolled va
     where VA_demo_setup_NCSC_temp.student_id = va.student_id
       and VA_demo_setup_NCSC_temp.academic_period = va.academic_period);

我看过一些与此类似的帖子,但我无法理解为什么这个特定的查询需要几个小时。我正在尝试删除两个数据集中都有 id 和 period 的记录。

如果我们看到了您的 table 结构和索引,就会更容易解释性能不佳的原因。但是,您的查询可以重写如下。您可能会发现它以这种方式执行得更好,这是按照您需要的方式删除数据的更标准方法。

DELETE          vt
FROM            VA_demo_setup_NCSC_temp vt
    INNER JOIN  VA_demo_setup_enrolled va ON vt.student_id = va.student_id AND vt.academic_period = va.academic_period;

也许您在 VA_demo_setup_NCSC_temp table 上有一个由 UNIQUEIDENTIFIER 组成的主键? (在这种情况下,重写的查询不会改变性能)