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的记录。
答案 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组成? (在这种情况下,重写的查询不会改变性能)