Новости
Документация
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: bac - 08/09/2008 - 12:31:57
Subject:Выборка из двух связанных таблиц
-----------------
Тут что-то не так.
1. Я бы все-таки сделал ключ только по DeviceId.
2. Посмотрел куда-ж тратится время
EXPLAIN SELECT DeviceId, MAX(Volume) FROM Table GROUP BY DeviceId
3. Уж если все медленно, то ваш вариант со второй таблицей не даст ничего, т.к. все равно нужна обработка основной таблицы.
Поэтому нужно во второй таблице держать уже максиамльное значение, а не только id. Например,
UPDATE table2 SET maxVal = значение WHERE maxVal < значение AND DeviceId = Код
Можно все реализовать через триггеры.
Только не забыть реакцию при удалении записей из основной таблицы.

Но мне кажется это не понадобится.


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

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

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



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