我有两个表:

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/

10-12 14:03