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




MySQL.RU - Webboard



Вернуться
Оптимальный запрос. (Po4emu4ka) 28/01/2013 - 17:31:21
      Re: Оптимальный запрос. (Akina) 28/01/2013 - 18:57:28

> Original message text:
> From: Po4emu4ka - 28/01/2013 - 17:31:21
> Subject:Оптимальный запрос.
> -----------------
> Всем привет! Тут такая ситуация.
> Есть две таблички. В одной хранятся активные сессии пользователей. (active, примерно 100 тыс. записей). Во второй - архив закрытых сессий. (arch, 100 млн. записей). Полей в табличке много, но нам потребуются всего два.
> username и start_time.
>
> Мне нужно составить наиболее оптимальный запрос, который бы выбрал "провисшие" сессии из active, чтобы их потом удалить.
>
> SELECT active.username, active.start_time
> FROM active, arch WHERE (active.username=arch.username) AND (active.start_time < arch.start_time) ;
>
> явно не оптимален, т.к. выдаст все записи из архива, в которых username совпадает, а время начала сессии - больше и будет долго выполняться. Если врубать distinct - то селект долго выполняется. Нужно как можно более оптимальное решение. Может у кого-то будут идеи?
>


From: Akina - 28/01/2013 - 18:57:28
Subject:Оптимальный запрос.
-----------------
Получите в подзапросе по таблице arch пару значений username и MAX(start_time), и уже его вяжите к таблице active

SELECT active.username, active.start_time
FROM active,
(select username, max(start_time) from arch group by username) a
WHERE (active.username=a.username) AND (active.start_time < a.start_time) ;




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

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

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



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