Como o MySQL não suporta subconsultas (antes da versão 4.1),
enm o uso de mais de uma tabela na instruçao
DELETE
(antes da versão 4.0), você deve
usar a seguinte abordagem para deletar linhas de 2 tabelas
relacionadas:
SELECT
as linhas baseado em alguma
condição WHERE
na tabela principal.
DELETE
as linhas da tabela princiapl
basada nas mesmas condições.
DELETE FROM tabela_relacionada WHERE
coluna_relacionada IN (linhas_selecionadas)
.
Se o número total de caracteres na consulta com
colunas_relacionadas
é maior que 1,048,576
(o valor padrão de max_allowed_packet
, você
deve separá-lo em duas partes menores e executar múltiplas
instruções DELETE
. Você provavelmente
obterá o DELETE
mais rápido apenas
delatando 100-1000 ids de
colunas_relacionadas
por consulta se
colunas_relacionadas
é um índice. Se
colunas_relacionadas
não é um índice, a
velocidadi é independente do número de argumentos na cláusula
IN
.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.