Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




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, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
37515



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |