поиск:
Полезные ссылки

  • Форум по MySQL

  • Статьи по MySQL

  • Вопросы по MySQL

  • MySQL.com


  • Базы данных

  • MySQL

  • PostgreSQL


  • PHP конференция 2005
    Подробности!

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

    Поскольку MySQL до 4.1.0 не поддерживает вложенных запросов, а также использование более одной таблицы в команде DELETE (до версии 4.0), то для удаления строк из 2 взаимосвязанных таблиц следует использовать следующий подход:

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

    2. Выполните DELETE строк главной таблицы на основе этого же условия.

    3. 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.

     
    © 1997-2005 PHP Club Team
    Rambler's Top100