私は2つのテーブルを持っています:
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
削除したいレコード (ここでは table1.id =20) の親と子が 1 つしかない場合、テーブル全体に対して内部結合を行うのは高くつきませんか?
このクエリを JAVA (つまり JDBC) から実行していますが、上記の条件で複数のクエリまたは内部結合を実行する方が (パフォーマンス的に) コストがかかりますか?
注: テーブルの参照整合性がないことを前提としています。したがって、カスケード削除は使用していません。