Tengo dos tablas:¿Cuándo es mejor no usar la unión interna?
table1 (id, name, connte)
table2 (id, name, connte)
Están conectados a través de table1.connte y table2.connte. Y cada uno de ellos contiene 100 registros.
Ahora si quiero eliminar un registro de tabla1 con id = 20 y sus correspondientes hijos en tabla2, es mejor hacer lo siguiente:
DELETE d1,d2 FROM table1 d1 INNER JOIN table2 d2 ON d1.connte= d2.connte WHERE d1.id = 20
o el siguiente:
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
Si solo hay un padre y un hijo para un registro que deseo eliminar (en este caso table1.id = 20), ¿no es costoso realizar una unión interna para toda la tabla?
Estoy ejecutando esta consulta desde JAVA (por lo que JDBC), por lo que es más caro (rendimiento) para ejecutar múltiples consultas o una unión interna, por la condición mencionada anteriormente?
NOTA: Suponiendo que no hay integridad referencial para las tablas. Entonces, no estoy usando la eliminación en cascada.
Hmm..ok, pero ¿qué pasa cuando tengo, digamos, cien mil o un millón de registros? ¿Qué enfoque sería mejor para mi condición mencionada? – Harke
Aún recomendaría dejar que el DBMS lo maneje. Sabe cómo hacer estas optimizaciones mejor de lo que usted probablemente pueda. – Oleksi
¿Hay alguna forma en que pueda saber cómo funciona la unión interna? ¿No unirá dos mesas con millones de registros cada una, tomará tiempo? (incluso después de filtrar con la cláusula ON, existe la posibilidad de que haya muchos registros para unir) – Harke