我有两个表:
table1 (id, name, connte)
table2 (id, name, connte)
它们通过 table1.connte 和 table2.connte 连接。每个都包含100条记录。
现在,如果要从id为20的table1中删除一条记录,并在table2中删除其对应的子记录,最好执行以下操作:
DELETE d1,d2 FROM table1 d1 INNER JOIN table2 d2 ON d1.connte= d2.connte WHERE d1.id = 20
或以下内容:
select connte from table1 where id = 20
--Store connte in a variable say aabc--
delete from table2 where connte = aabc -> execute this first
delete from table1 where id = 20 -> execute this second
如果要删除的记录只有一个 parent 和一个 child (在这里table1.id = 20),那么对整个表进行内部联接是否昂贵?
我正在从JAVA(so JDBC)运行此查询,因此对于上述情况,运行多个查询或内部联接是否更昂贵(从性能角度考虑)?
注意:假定没有表的引用完整性。因此,我没有使用级联删除。
最佳答案
一次查询而不是两次查询可能会更快。基本上,您是在尝试自己进行优化,而不是让DBMS进行优化,通常DBMS在这种方面确实很擅长。
另外,您可能不必担心如此小的表的删除性能。 100 x 100行仍然很小,因此您的DBMS应该能够毫无问题地进行处理。
关于mysql - 什么时候不使用内部联接更好?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10898784/