2012-03-26 45 views
0

我有这样的表格布局:如何优化MySQL的Querys

uuid bigint(20) unsigned primary auto_increment 
timestamp int(11) unsigned 
name varchar(255) 
type enum('A','B') 
subtype varchar(255) 

而且我卡上查询,我目前用的是这个:

SELECT name, COUNT(*) as count FROM table GROUP BY name 

这个我跑后为每个'名称'获取类型为'B'的条目数量的循环,然后为每个子类型再次获取循环。但是这最终会导致大约500k的查询,这太多了,必须有一个更简单的方法来做到这一点,但我对这个数据库的东西真的很陌生......

回答

2

您可以在GROUP BY中使用多个值。

SELECT name, type, subtype, COUNT(*) as count FROM table GROUP BY name, type, subtype 

然后结果包含数据库中每个名称,类型,子类型组合的一行以及相应的条目数。

+0

我希望结果集可以有更多的列而不是更多的行。 – 2012-03-26 11:34:24

+0

@Tobias,你能解释一下你的意思吗? – KingCronus 2012-03-26 11:51:46

+0

如果我运行这个查询,我得到20行开始相同的名称,我真正需要的是每个名称只有一行,一个col类型和每个子类型一个col。 – 2012-03-26 20:33:42

0
SELECT name, type, subtype, Count(*) FROM table GROUP BY name, type, subtype 

那怎么样?