删除存在的位置

时间:2016-11-14 15:38:42

标签: sql sql-delete 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的记录。

1 个答案:

答案 0 :(得分:3)

如果我们看到你的表结构和索引,那么解释性能不佳会更容易。但是,您的查询可以重写如下。您可能会发现它以这种方式表现更好,这是以您需要的方式删除数据的更标准方法。

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表上有一个主键,它由一个UNIQUEIDENTIFIER组成? (在这种情况下,重写的查询不会改变性能)