什么时候更好的多个查询而不是多个连接?

Enr*_*que 5 sql performance select join

SO中存在许多类似"多个查询与单个查询"类型的问题.
但我没有看到任何一般结论,因此我仍然对此感到困惑.

所以,我会用其他术语来问它:

何时更好地运行多个查询而不是具有多个连接的单个查询?

我不是要求琐碎的案例,显然加入两个或三个表比执行3个查询要快得多.

我正在考虑例如你有10个以上连接的情况,其中一些连接是多对多的关系,所以你的最终查询有GROUP_CONCAT,混合了LEFT和INNER连接等.

例如,您需要产品名称,以及所有图像,以及所有标签,以及所有视频,以及您可以购买的所有路线.
最好使用复杂的连接和group_concat进行非常长的查询(如果你不能使用distinct,这很多次很难管理),或者对产品细节执行查询,对图像执行查询,另一个用于查询标签等?

如果它有助于澄清问题,我可以写一个特定的例子.但我希望这种情况有一个普遍的规则.
极限在哪里?当使用Joins的单个查询比多个查询更糟糕时?

而且,在那些最好运行多个SELECT查询的情况下:
在事务中运行它们会更快(autocommit = false)?
在具有多个子选择的单个查询中合并这些多个选择会更快吗?

谢谢 !

Zoh*_*aib 1

极限在哪里?当使用连接的单个查询比多个查询更糟糕时?

我认为划定限制并不容易,这在很大程度上取决于您的场景和情况。可能有多种因素,如索引、分区、连接列、行数、查询结构等

多重联接,例如联接 5 列,其中联接列是键,大多数行的值都不相同(例如性别)并且具有适当的索引,可能比仅联接两个没有适当索引的表的查询更快。

我猜想一个人可能会为自己设定限制,例如你可以决定这个特定的用例(例如插入或选择)所花费的时间不得超过1秒,如果超过1秒,可能需要更多的优化。