ho due tabelle:Quando è meglio non usare inner join?
table1 (id, name, connte)
table2 (id, name, connte)
sono collegati tramite table1.connte e table2.connte. E ognuno di loro contiene 100 record.
Ora, se voglio eliminare un record da table1 con id = 20 e dei suoi figli corrispondenti table2, è meglio effettuare le seguenti operazioni:
DELETE d1,d2 FROM table1 d1 INNER JOIN table2 d2 ON d1.connte= d2.connte WHERE d1.id = 20
o il seguente:
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
Se c'è un solo genitore e un figlio per un record che voglio cancellare (qui table1.id = 20), allora non è costoso fare inner join per l'intera tabella?
Sto eseguendo questa query da JAVA (quindi JDBC), quindi è più costoso (prestazioni saggio) eseguire più query o un join interno, per la condizione sopra menzionata?
NOTA: Assunzione di integrità referenziale per le tabelle. Quindi, non sto usando l'eliminazione a cascata.
Hmm..ok, ma che dire di quando ho, diciamo centomila o un milione di record? Quale approccio sarebbe quindi migliore per la mia condizione menzionata? – Harke
Vorrei ancora raccomandare che il DBMS lo gestisca. Sa come fare queste ottimizzazioni meglio di quanto tu possa. – Oleksi
C'è un modo per sapere come funziona l'inner join? Non si uniranno due tavoli con milioni di record ciascuno, ci vorrà del tempo? (anche dopo aver filtrato con la clausola ON, c'è la possibilità che ci siano molti record da unire) – Harke