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




MySQL.RU - Webboard



Вернуться
Выборка из двух связанных таблиц (Андрей) 08/09/2008 - 10:27:32
      Re: Выборка из двух связанных таблиц (boriz) 08/09/2008 - 11:21:50
      Re: Выборка из двух связанных таблиц (Андрей) 08/09/2008 - 11:33:51
      Re: Выборка из двух связанных таблиц (bac) 08/09/2008 - 12:31:57
      Re: Выборка из двух связанных таблиц (boriz) 09/09/2008 - 06:54:43
      Re: Выборка из двух связанных таблиц (Андрей) 09/09/2008 - 09:46:57
      Re: Выборка из двух связанных таблиц (bac) 09/09/2008 - 10:12:51
      Re: 2 boriz (bac) 09/09/2008 - 10:19:27
      Re: 2 boriz (boriz) 09/09/2008 - 13:28:35
      Re: 2 boriz (boriz) 09/09/2008 - 13:40:04
      Re: Выборка из двух связанных таблиц (mpil) 11/09/2008 - 17:26:28
      Re: Выборка из двух связанных таблиц (mpil) 11/09/2008 - 17:28:05

> Original message text:
> From: Андрей - 08/09/2008 - 10:27:32
> Subject:Выборка из двух связанных таблиц
> -----------------
> Подскажите, как сделать.
>
> Необходимо вычислить максимальное значение параметра Volume для каждого DeviceId в таблице.
>
> Например:
> Id ........ DeviceId ........ Volume .......
> 1 ............. 1 .............. 4 .........
> 2 ............. 2 .............. 92 ........
> 3 ............. 3 .............. 2 .........
> 4 ............. 1 .............. 70 ........
> 5 ............. 2 .............. 8 .........
> 6 ............. 1 .............. 3 .........
>
> В результате нужно вывести строки:
> DeviceId = 1 Volume = 70 Id = 4
> DeviceId = 2 Volume = 92 Id = 2
> DeviceId = 3 Volume = 2 Id = 3
>
>
> Но таблица содержит более 200 000 значений!! Поэтому думаю создать 2 таблицы:
> 1 - таблица со всеми данными, в т.ч. 'DeviceId'
> 2 - таблица с одним полем 'DeviceId'
>
> Т.е. при добавлении данных в 1 таблицу, проверять, есть ли DeviceId во второй. Если нет - добавлять его туда.
> А уже потом при запросе максимального значения каждого DeviceId просто выбирать из таблицы 2 список DeviceId (их там будет 5-10), и потом уже по этим 5-10 значениям производить поиск по 1 таблице!!
>
> Это должно значительно ускорить работу БД!
>
> Подскажите, пожалуйста, знающие люди, как можно реализовать такой подход?
>


From: boriz - 09/09/2008 - 06:54:43
Subject:Выборка из двух связанных таблиц
-----------------
Вот у меня рядом таблица на >~300000 записей, можно примерно такие же задачи ставить. Ввожу подобный запрос, используя только индекс по одному полю DeviceId (у меня по другому называется, но это не важно). Работает ~0.3 сек. Использую в запросе индекс (primary key), созданный на основе двух полей (DeviceId и Volume), работает 0.0006 сек в phphmyadmin :)
Один только индекс по deviceid ничего не даст, т.к. для поиска максимального значения всё-равно приходится сканировать всю таблицу. А при наличии индекса, сделанного сразу по двум этим полям (ОДИН индекс на двух полях, а не два индекса по каждому полю :) ), все нужные данные уже будут в нём содержаться.

P.S. У меня, конечно, сервер достаточно мощный и эта таблица закеширована в памяти, а не с диска читается.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
34074



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