gp数据库,数据量很大,需要关联多表对一张表的数据进行删除,看下sql有没有什么好的解决办法
具体的sql是这样的
-- 可执行
这种写法是可以进行查询的
select t1.* from trms_sour_order t1, trms_sour_r9 t2 where t1.SHIP_ID = t2.SHIP_ID)
-- 报错
但是这个会报错
delete t1 from trms_sour_order t1, trms_sour_r9 t2 where t1.SHIP_ID = t2.SHIP_ID
-- 报错
delete t1 from trms_sour_order t1 inner join trms_sour_r9 t2 on t1.SHIP_ID = t2.SHIP_ID
-- 包含子查询 太慢 执行不出来
delete from trms_sour_order where ship_id in ( select t1.ship_id from trms_sour_order t1, trms_sour_r9 t2 where t1.SHIP_ID = t2.SHIP_ID)
delete from trms_sour_order where ship_id in ( select t2.SHIP_ID fromtrms_sour_r9 t2);或者delete from trms_sour_order where exists ( select 1 fromtrms_sour_r9 t2wheret2.ship_id=ship_id);这个看看分析一下。特别是注意是否有索引。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。