2012-03-26 4 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», а затем снова для каждого подтипа. Но в конечном итоге это около 500 тыс. Запросов, и это слишком много, должен быть более простой способ сделать это, но я действительно новичок в этой базе данных ...

ответ

2

Вы можете использовать несколько значений в GROUP BY.

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

Результат затем содержит одну строку для каждого имени, типа, подтипа комбинации в базе данных с соответствующим количеством записей.

+0

Я надеялся, что набор результатов может содержать дополнительные столбцы вместо нескольких строк. –

+0

@ Тобиас, не могли бы вы объяснить, что вы подразумеваете под этим? – KingCronus

+0

Если я запустил этот запрос, я получаю до 20 строк, начинающихся с того же имени, мне действительно нужна только одна строка для имени и один столбец для типа и один столбца для каждого подтипа. –

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

Как насчет этого?

Смежные вопросы