







|
MySQL.RU - Webboard
Вернуться
Запрос с GROUP BY (mihim) 23/09/2010 - 11:02:02
Re: Запрос с GROUP BY (bac) 23/09/2010 - 22:41:06
Re: Запрос с GROUP BY (mihim) 24/09/2010 - 00:07:10
Re: Запрос с GROUP BY (Hamyachok) 24/09/2010 - 15:56:09
Re: Запрос с GROUP BY (bac) 24/09/2010 - 19:12:08
Re: 2 Hamyachok (bac) 24/09/2010 - 19:14:44
Re: 2 bac (mihim) 27/09/2010 - 12:07:07
> Original message text:
> From: mihim - 23/09/2010 - 11:02:02
> Subject:Запрос с GROUP BY
> -----------------
> Дано: 2 таблицы - towns(id, title), vacancies(id, town_id).
> Надо получить: список названий всех городов из towns с количеством вакансий в этом городе.
>
> Следующий запрос выбирает только города, для которых есть записи в vacancies.
> SELECT towns.title, COUNT(vacancies.id) FROM towns, vacancies WHERE towns.id = vacancies.town_id GROUP BY towns.title
>
> Подскажите, пожалуйста, как получить ВСЕ города? Заранее очень признателен.
>
From: mihim - 27/09/2010 - 12:07:07
Subject:2 bac
-----------------
Насчет индексов мне уже намекнули. Проверил, действительно, на vacancies.town_id не было индекса. С ним работает намного быстрее.
Вместе с тем мне еще предложили вариант с вложенным запросом, который, как ни странно, работает еще быстрее:
SELECT towns.title, ifnull(cou, 0) AS cou
FROM towns LEFT JOIN (SELECT town_id, COUNT(*) AS cou FROM vacancies GROUP BY town_id) AS vac
ON towns.id = vac.town_id
Что Вы по этому поводу думаете?
Дополнительная информация:
Количество записей:
vacancies 14406
towns 25
Сгенерил новый тестовый набор записей для vacancies(более равномерный). Теперь примерно по 600 записей на каждый город (раньше все записи приходились на 5 городов).
Индексы towns: id(PRIMARY).
Индексы vacancies: id(PRIMARY), tonw_id(INDEX).
Время выполнения:
без вложенного запроса 0,035 сек.
с вложенным запросом 0,007 сек.
Результаты EXPLAIN здесь http://pic.rapidshare.ru/1637054
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
37515
|
|