【发布时间】:2012-01-15 01:32:08
【问题描述】:
SO中有很多类似的“多查询vs单查询”类型的问题。
但是我没有看到任何一般结论,因此我仍然对此感到困惑。
所以,我换个说法:
什么时候运行多个查询而不是多个连接的单个查询更好?
我不是在问微不足道的情况,显然加入两个或 3 个表比执行 3 个查询要快得多。
我考虑的情况是,例如您有 10 多个连接,其中一些连接是多对多关系,因此您的最终查询有 GROUP_CONCAT、LEFT 和 INNER 连接的混合等。
例如,您想要 product 名称,还想要它们的所有 图像,以及它们的所有 标签,以及它们的所有 视频,以及您可以购买的所有方向。
最好使用复杂的连接和 group_concat 进行非常长的查询(如果您不能使用 distinct,这很多时候真的很难管理),或者执行产品详细信息查询、图像查询、另一个查询标签等?
如果有助于澄清问题,我可以写一个特定的示例。但我希望这种情况的一般规则。
限制在哪里?何时使用 Joins 的单个查询比多个查询更糟糕?
而且,在这些情况下,何时运行多个 SELECT 查询更好:
在事务中运行它们更快(自动提交 = false)?
更快将多个选择合并到具有多个子选择的单个查询中?
谢谢!
【问题讨论】:
标签: sql performance select join