sql嵌套查询删除怎么优化?

0
DIM_MZHZ有两百多万条记录,我想做一个带子查询的删除,如下,发现半天出不来,看了下执行计划,好像有个全表扫描,这个能优化么?
 delete from  ETYY_DW.dbo.DIM_MZHZ_TMP  where not exists  (select * from DIM_MZHZ b where patid=b.patid)

QQ图片20160314135019.png

 
已邀请:
1

- 取是能力,舍是境界 2016-03-14 回答

如果你删除的记录占全表的比较多的话,可以用多表级联删除。
 
如果删除的记录占全表的比较少的话,可以用子查询in。
1

红旗下的匪徒 2016-03-17 回答

子查询中别用*,用主键删除会更效率些
0

gogodiy - 天善智能数据库专家、Tableau爱好者 2016-03-14 回答

1.两个表的patid最好有聚集索引。
2.使用delete from table1 inner join table2 on a.patid=b.parit试试。
 

要回复问题请先登录注册