MySQL.RU .:. Одобрено лучшими российскими программистами
Справочное руководство по MySQLA.5.5 Удаление строк из взаимосвязанных таблиц
A.5.5 Удаление строк из взаимосвязанных таблиц
Поскольку MySQL пока что не поддерживает вложенных запросов, а также (до
версии 4.0) использование более одной таблицы в команде DELETE , то для
удаления строк из 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 .
|