Oracle不用左连接替换

时间:2016-11-11 15:33:41

标签: sql left-join notin

我试图创建一个清除脚本来清除所有未使用的描述: 我的查询如下:

DELETE FROM DESCRIPCIONES WHERE ID_DESCRIPCION NOT IN
(SELECT ID_NOMBRE FROM CUESTIONARIOS 
UNION
SELECT ID_DESCRIPCION FROM CUESTIONARIOS 
UNION
SELECT ID_NOMBRE FROM PLANTILLAS
....
)

此查询中还有更多UNION。这就是为什么这个查询花费太多时间的原因。有没有办法用更快的 LEFT JOIN 替换此查询,并避免嵌套查询。 PD:Oracle 11g

由于

1 个答案:

答案 0 :(得分:0)

最后我使用了下一个查询:

DELETE FROM DESCRIPCIONES WHERE ID_DESCRIPCION NOT IN
(SELECT ID_NOMBRE FROM CUESTIONARIOS 
UNION ALL
SELECT ID_DESCRIPCION FROM CUESTIONARIOS 
UNION ALL
SELECT ID_NOMBRE FROM PLANTILLAS
....
)

并且得到了巨大的性能提升,感谢所有人!