Поскольку MySQL до 4.1.0 не
поддерживает вложенных запросов, а
также использование более одной
таблицы в команде DELETE (до
версии 4.0), то для удаления строк из
2 взаимосвязанных таблиц следует
использовать следующий подход:
Выполните в главной таблице
SELECT строк на основе
некоторого условия
WHERE.
Выполните DELETE строк
главной таблицы на основе этого
же условия.
DELETE FROM related_table WHERE related_column IN
(selected_rows).
где selected_rows - количество
строк, выбранных по запросу в п.1.
Если общее количество символов в
запросе с related_column больше
1048576 (значение max_allowed_packet
по умолчанию), то следует разбить
запрос на меньшие части и
выполнить несколько команд
DELETE. Если
related_column является
индексом/индексирован, то самый
быстрый DELETE получится
при удалении 100-1000 идентификаторов
related_column за запрос. Если
related_column не индекс, то
скорость не зависит от количества
аргументов в операторе
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.
© 1995-2005 MySQL AB. All rights reserved.
