0

我想知道执行多个内部连接 ​​VS 多个简单查询的优点(到本地主机,所以带宽和数据包延迟不是问题)。

之前已经提出过这个问题,但大多数人建议这取决于特定的查询,所以这里是我的详细信息:

我有大约 20 个简单的表(其中大多数是 3-5 列),它们都有一个共同的列,我可以将它们加入如下:

    SELECT a.id,a.a,GROUP_CONCAT(distinct b.b),GROUP_CONCAT(distinct c.c).....
    FROM a JOIN b ON a.id=b.id JOIN c ON b.id=c.id.......
    WHERE a.id='foo';

由于我在可能获得多个值时使用 GROUP_CONCAT,所以我只得到一行。

或者,我可以做 20 个简单的选择查询。

您认为哪种方法在时间和 CPU 方面更可取?

4

1 回答 1

0

通常,使用最少的查询会做得更好。数据库必须做的工作更少(解析次数减少 19 次),缓存可能会被准备好,并且计划将针对手头的问题进行优化,而不是 5% 的问题。为往返添加网络延迟,它变得非常令人信服。另一方面,如果您发现 20 个单独的查询更便宜,那么您可能会发现数据库正在努力处理过时的统计信息或其他问题,需要进行一些调整。

于 2013-06-17T22:29:03.307 回答