2016-05-24 213 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本身会自动删除所有相关的行。

如果您需要手动删除它,我会在transaction中使用多个DELETE语句。

+0

这真的是很棒的信息 - 而且我肯定会更多地关注这些信息。它可能会解决我现在正在研究的许多问题。我的问题更多的是为什么或为什么不进行多个查询而仅仅是一个。 – user791187

+0

@ user791187 1)多个DELETE查询更易于阅读和维护。 2)一次从多个表中删除的语法不是标准的SQL,并且在RDBMS之间有所不同。 3)删除行通常不是应用程序的瓶颈。 – ShiraNai7