我有3个表,第一个,table1,作为主键的ID列,第二个表(table2)有一个列table1_id作为外键引用table1.id,第三个表(表3)具有作为表2的列table1_id,其作为外键指向table1.id。如何优化这个SQL删除语句
我已经从删除表1,其中table1.id不table2.table1_id而不是在table3.table1_id
现在我使用此查询的所有行:
DELETE FROM table1
WHERE table1.id IN (SELECT table1.id
FROM (table2
RIGHT OUTER JOIN table1
ON table2.table1_id = table1.id)
LEFT OUTER JOIN table3
ON table3.table1_id = table1.id
WHERE table2.table1_id IS NULL
AND table3.table1_id IS NULL);
但非常慢,需要很多时间,这个删除语句有更好的方法吗?
如果这可以帮助我可以假设table2有更多的数据table3。
我使用的数据库是Apache Derby。
感谢您的帮助。
在DBA.stackexchange.com上可能会更好,我们觉得呢? –
为什么downvote?这个问题出了什么问题? – res1
@格雷B,不,我不认为dba是它的地方。这对于管理问题更是如此。这是一个SQL问题,因此属于这里。 – HLGEM