Oracle 通过左连接替换不在
Oracle replace not in by left join
我正在尝试创建一个清理脚本来清除所有未使用的描述:
我的查询看起来像:
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
谢谢
最后我使用了下一个查询:
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
....
)
并且有了巨大的性能提升,感谢大家!
我正在尝试创建一个清理脚本来清除所有未使用的描述: 我的查询看起来像:
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
谢谢
最后我使用了下一个查询:
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
....
)
并且有了巨大的性能提升,感谢大家!