Удаление строк из связанных таблиц

Удаление строк из связанных таблиц

Mysql 4 не поддерживает подрапросы. Всвязи с этим возникают прблемы при удалении связанных записей.

В версиях MySQL, предшествующих 4.1, не поддерживаются подзапросы, а в версиях ниже 4.0 не поддерживается использование более чем одной таблицы в операторе DELETE.

Если установлена именно одна из упомянутых версий, удалить строки из двух связанных между собой таблиц можно с помощью следующего подхода:

1. В главной таблице выберите строки с помощью SELECT, основываясь на некотором условии WHERE.

2. Удалите строки с помощью DELETE из главной таблицы, основываясь на том же самом условии.

3. Удалите строки с помощью DELETE FROM связанная_таблица WHERE связанный_столбец IN {выбранные_строки}.

Если общая длина оператора для таблицы связанная_таблица превышает 1 Мбайт (значение системной переменной max_allowed_packet по умолчанию), необходимо разделить его на части поменьше и выполнить сразу несколько операторов DELETE.

Скорее всего, самый быстрый оператор DELETE получится при указании только от 100 до 1000 значений связанный_столбец в каждом таком операторе, если связанный_столбец проиндексирован.

Если столбец связанный_столбец не проиндексирован, скорость выполнения не будет зависеть от количества аргументов в конструкции IN.

Нет комментариев.
Добавить комментарий
Вам необходимо включить показ изображений в браузере для того чтобы увидеть код

Дайте нам знать, что вы - живой человек. Для нас это важно!
Кликните, если плохо видно

Прежде чем высказать свое мнение, прочитайте пожалуйста: правила

Рейтинг@Mail.ru