我想知道执行多个内连接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方式?
答案 0 :(得分:0)
通常,您可以使用最少的查询做得更好。数据库必须做更少的工作(19个更少的解析)缓存可能会被启动,并且计划将针对手头的问题进行优化,而不是问题的5%。为往返旅行添加网络延迟,它变得非常精彩。另一方面,如果您发现20个单独的查询更便宜,那么您可能会发现数据库正在挣扎于过时的统计数据或某些东西,需要稍微调整一下。