MySQL no soporta subconsultas en versiones previas a la 4.1, o
el uso de más de una tabla en la sentencia
DELETE
anteriormente a la versión 4.0. Si su
versión de MySQL no soporta subconsultas, o sentencias
DELETE
multi-tabla, puede utilizar las
siguientes estrategias para borrar registros de dos tablas
relacionadas:
Seleccione (SELECT
) los registros basados
en una condición WHERE
en la tabla
principal.
Borre (DELETE
) los registros de la tabla
principal basándose en la misma condición.
DELETE FROM tabla_relacionada WHERE
columna_relacionada IN (registros_seleccionados)
.
Si la longitud total de la sentencia DELETE
para tabla_relacionada
es más de 1MB (el
valor por defecto de la variable de sistema
max_allowed_packet
), debería partirla en
partes más pequeñas y ejecutar múltiples sentencias
DELETE
. Problablemente obtenga el borrado
más rápido especificando entre 100 y 1000 valores de
columna_relacionada
por sentencia si
columna_relacionada
está indexada. Si
columna_relacionada
no está indexada, la
velocidad es independiente del número de argumentos en la
clausula IN
.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.