2016-05-24 2 views
-1

У меня возник вопрос в течение некоторого времени относительно запросов MySQL. Я разработал систему, которая требует, чтобы пользователь удалял сообщение, также должно быть удаление информации из других таблиц. Вопрос сводится к следующему: мне лучше использовать метод, который удаляет все строки из нескольких таблиц в ОДНОМ запросе или более интенсивно использует ресурсы для выполнения нескольких запросов для выполнения одного и того же действия? Одна из причин моего вопроса - это сообщение: Mysql - delete from multiple tables with one query. Кажется, из ответов, которые испытывают кодеры, нет необходимости выполнять действие в одном запросе. Фактически, из этого сообщения кажется, что подход удаления нескольких строк из нескольких таблиц в одном запросе был более ресурсоемким: How to delete from multiple tables in MySQL?. Мои мысли всегда заключались в том, что если я могу сделать все это в одном запросе, это будет менее ресурсоемким. Это был мой общий подход к CRUD - хотя у меня теперь есть сомнения относительно того, насколько уместен этот подход. Заранее спасибо за вашу помощь!MySQL - Несколько запросов по сравнению с одним запросом

+0

Единственный ответ, о котором я действительно могу думать, это «это зависит». –

+0

Какие ресурсы? Чисто те, что находятся в базе данных или на вызывающем сервере. Ресурсы для отправки запроса на сервер могут быть значительными. – Kickstart

+0

@Kickstart - спасибо. Это значит, что локальная обработка запроса является интенсивной? Так вы бы рекомендовали только сделать один запрос? – user791187

ответ

1

Почему бы не использовать foreign keys с ON DELETE CASCADE? Тогда сам MySQL автоматически удалит все связанные строки.

Если вам нужно удалить его вручную, я бы пошел с несколькими операторами DELETE в transaction.

+0

Это действительно отличная информация - и я обязательно буду больше смотреть. Вероятно, это решит многие из проблем, которые я сейчас рассматриваю. Мой вопрос больше касается того, почему или почему бы не делать несколько запросов против одного. – user791187

+0

@ user791187 1) Несколько запросов DELETE легче читать и обслуживать. 2) Синтаксис для удаления из нескольких таблиц сразу не является стандартным SQL и отличается между РСУБД. 3) Удаление строк обычно не является узким местом приложения. – ShiraNai7

Смежные вопросы