SO中有很多类似“多查询与单查询”类型的问题。
但是我没有看到任何具有一般性结论的内容,因此我对此仍然感到困惑。
所以,我会用其他方式问它:
什么时候运行多个查询而不是具有多个连接的单个查询更好?
我不是在要求琐碎的情况,显然连接两个或 3 个表比执行 3 个查询要快得多。
我正在考虑例如您有 10 个以上连接的情况,其中一些连接是多对多关系,因此您的最终查询具有 GROUP_CONCAT、LEFT 和 INNER 连接的混合等。
例如,您需要产品名称、所有图片、所有标签、所有视频,以及您可以购买的所有方向。
最好使用复杂的连接和 group_concat 进行很长的查询(如果您不能使用 distinct ,这在很多时候真的很难管理),或者执行产品详细信息查询、图像查询、另一个查询标签等?
如果它有助于澄清问题,我可以写一个特定的例子。但我希望这种情况的一般规则。
极限在哪里?当带有连接的单个查询比多个查询更糟糕时?
而且,在这些情况下,最好运行多个 SELECT 查询:
在事务中运行它们更快(自动提交 = false)?
将单个查询中的多个选择与多个子选择合并是否更快?
谢谢 !
最佳答案
Where is the limit? when a single query with Joins is worst than multiple queries?
我认为划定界限并不容易,这在很大程度上取决于您的场景和情况。可能有多种因素,例如索引、分区、连接列、行数、查询结构等。
多个连接,例如连接 5 列,其中连接列是键,大多数行的值不同(例如性别)并且具有适当的索引可能比仅连接两个没有适当索引的表的查询更快。
我想人们可能会为自己设定限制,例如您可以决定这个特定用例(例如插入或选择)不得超过 1 秒,如果花费超过 1 秒,则可能需要更多优化。
关于sql - 什么时候多查询而不是多连接更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8417004/