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.
