MYSQL多个查询或单个查询 - 哪个更有效率

问题描述:

我有一个3列的表:Animal,key,owner。示例MYSQL多个查询或单个查询 - 哪个更有效率

Cat  1  Bob 
Bird 2  Bob 
dog  3  Bob 
dog  4  Andy 
Lizard 5  Andy 
Bird 6  Andy 
Cat  7  Andy 

和每个动物的一个相关表(列键,重量)。例如,表CAT_WEIGHT:

1 12 
7 17 

我想找到MinMaxAverageTotalCount每个动物类型,但只针对特定的所有者。

这是可以使用单个MYSQL查询来计算这些吗?我知道我可以在多个查询中做到这一点,但我正在寻找最佳方法。

谢谢

+0

请注意:一或更多的答案可能不再适用于这个问题,因为它已被编辑为与原始问题完全不同。 – bernie 2013-02-15 00:06:48

是的,只用一个查询就可以做到这一点。

所有其他的事情都是平等的,你想尽可能少地使用查询。往数据库的往返行程通常是在程序中遇到的一些更昂贵的事情。

select 
    animal, 
    min(weight) min_weight, 
    max(weight) max_weight, 
    avg(weight) avg_weight, 
    sum(weight) tot_weight, 
    count(weight) cnt_weight 
from 
    your_table 
group by 
    animal 
order by animal; 
+0

我觉得这很接近。我意识到重量是在另一个表(见修订后的questoin)。在单个查询中仍然有可能吗? – TSG 2013-02-14 23:46:46

+0

修改与原始问题显着不同的问题不一定非常经常进行。你不妨打开一个单独的问题。或者,也许有人会过来回答现在的问题。 – bernie 2013-02-15 00:07:23

+0

你说得对 - 我会提出一个新问题。谢谢 – TSG 2013-02-15 00:35:03

如何:

从animals_table组选择分钟(重量),MAX(重量),和(重量),COUNT(*)的动物

+0

这将使用NULL权重对行进行计数。 – bernie 2013-02-14 23:24:59

+0

Ooopsie。编辑。 – ethrbunny 2013-02-15 00:20:16