在SO上有很多类似“Multiple Queries vs Single Query”的问题,但我没看到有一个通用的结论,因此我仍然对此感到困惑。
所以,用另外一种方式来问:
何时最好运行多个查询而不是一个具有多个连接的单个查询?
我不是在问那些简单的情况,显然,连接两个或三个表比执行3个查询要快得多。
我想到的是例如您有10个以上的连接,并且其中一些连接是多对多关系,因此您的最终查询具有GROUP_CONCAT,LEFT和INNER连接等。例如,你想要产品名称,但也包括所有它们的图像,标签,视频以及可以购买它的所有方向。是制作非常长的带复杂连接和group_concat查询比执行有关产品详细信息的查询以及有关图像、标签等的其他查询更好呢?如果无法使用distinct,这通常非常难以管理。
如果需要澄清问题,我可以提供一个特定的例子。但我希望有一个这种情况的通用规则。何时使用单个连接查询会更劣于多个查询?
此外,在那些需要运行多个SELECT查询的情况下:
在事务(autocommit = false)中运行它们更快吗?
将这些多个SELECT合并到具有多个子查询的单个查询中更快吗?
谢谢!
所以,用另外一种方式来问:
何时最好运行多个查询而不是一个具有多个连接的单个查询?
我不是在问那些简单的情况,显然,连接两个或三个表比执行3个查询要快得多。
我想到的是例如您有10个以上的连接,并且其中一些连接是多对多关系,因此您的最终查询具有GROUP_CONCAT,LEFT和INNER连接等。例如,你想要产品名称,但也包括所有它们的图像,标签,视频以及可以购买它的所有方向。是制作非常长的带复杂连接和group_concat查询比执行有关产品详细信息的查询以及有关图像、标签等的其他查询更好呢?如果无法使用distinct,这通常非常难以管理。
如果需要澄清问题,我可以提供一个特定的例子。但我希望有一个这种情况的通用规则。何时使用单个连接查询会更劣于多个查询?
此外,在那些需要运行多个SELECT查询的情况下:
在事务(autocommit = false)中运行它们更快吗?
将这些多个SELECT合并到具有多个子查询的单个查询中更快吗?
谢谢!