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




MySQL.RU - Webboard



Вернуться
Долго выполняется запрос (Миелофон) 05/07/2002 - 09:16:32
      Re: Долго выполняется запрос (ворон) 05/07/2002 - 10:24:36
      Re: Долго выполняется запрос (Mielofon) 05/07/2002 - 12:24:06
      Re: Долго выполняется запрос (Flagman) 05/07/2002 - 15:10:59
      Re: Долго выполняется запрос (Flagman) 05/07/2002 - 15:12:56
      Re: Долго выполняется запрос (WARHAMMER) 05/07/2002 - 16:06:05
      Re: И еще... (WARHAMMER) 05/07/2002 - 16:12:32

> Original message text:
> From: Миелофон - 05/07/2002 - 09:16:32
> Subject:Долго выполняется запрос
> -----------------
> Значит проблема в следующем
> Имеем 3 таблицы:
> 1. iptrafficlocal - трафик, большая (300Мег) содержит поля ipfrom1, ipfrom2, ipfrom3, ipfrom4, SizeTo
> 2. ips - описания IP, маленькая (записей 20) ip1, ip2, ip3, ip4, iptype, name, email
> 3. iptypes - группы IP, маленькая (записей 4) iptype, bg
>
> Теперь мне надо сделать выборку по трафику для каждого IP за месяц:
>
> SELECT `iptrafficlocal`.`ipfrom1`,
> `iptrafficlocal`.`ipfrom2`,
> `iptrafficlocal`.`ipfrom3`,
> `iptrafficlocal`.`ipfrom4`,
> SUM( `iptrafficlocal`.`SizeTo`, ) AS SUM_OF_SIZETO
> FROM `iptrafficlocal`
> WHERE
> (
> (DATE BETWEEN '2002-05-01' and '2002-05-31')
> )
> GROUP BY `iptrafficlocal`.`ipfrom1`, `iptrafficlocal`.`ipfrom2`, `iptrafficlocal`.`ipfrom3`, `iptrafficlocal`.`ipfrom4`
>
> данный запрос выполняется 25 секунд
>
>
> Попытка в результирующем запросе получить информацию из таблицы ips:
>
> SELECT `ips`.`iptype`,
> `ips`.`name`,
> `ips`.`email`,
> `iptrafficlocal`.`ipfrom1`,
> `iptrafficlocal`.`ipfrom2`,
> `iptrafficlocal`.`ipfrom3`,
> `iptrafficlocal`.`ipfrom4`,
> SUM( `iptrafficlocal`.`SizeTo`) AS SUM_OF_SIZETO
> FROM `ips`
> LEFT OUTER JOIN `iptrafficlocal` ON (`iptrafficlocal`.`ipfrom1` = `ips`.`ip1`) AND (`iptrafficlocal`.`ipfrom2` = `ips`.`ip2`) AND (`iptrafficlocal`.`ipfrom3` = `ips`.`ip3`) AND (`iptrafficlocal`.`ipfrom4` = `ips`.`ip4`)
> WHERE
> (
> (DATE BETWEEN '2002-05-01' and '2002-05-31')
> )
> GROUP BY `ips`.`iptype`, `ips`.`name`, `ips`.`email`, `iptrafficlocal`.`ipfrom1`, `iptrafficlocal`.`ipfrom2`, `iptrafficlocal`.`ipfrom3`, `iptrafficlocal`.`ipfrom4`
>
> уже увеличивает время запроса так, что мы не дождались его выполнения.
> Так же как и запрос:
>
> SELECT `iptypes`.`bg`,
> `ips`.`iptype`,
> `ips`.`name`,
> `ips`.`email`,
> `iptrafficlocal`.`ipfrom1`,
> `iptrafficlocal`.`ipfrom2`,
> `iptrafficlocal`.`ipfrom3`,
> `iptrafficlocal`.`ipfrom4`,
> SUM( `iptrafficlocal`.`SizeTo`, ) AS SUM_OF_SIZETO
> FROM `iptrafficlocal`
> LEFT OUTER JOIN `ips` ON (`iptrafficlocal`.`ipfrom1` = `ips`.`ip1`) AND (`iptrafficlocal`.`ipfrom2` = `ips`.`ip2`) AND (`iptrafficlocal`.`ipfrom3` = `ips`.`ip3`) AND (`iptrafficlocal`.`ipfrom4` = `ips`.`ip4`)
> LEFT OUTER JOIN `iptypes` ON (`ips`.`iptype` = `iptypes`.`iptype`)
> WHERE
> (
> (DATE BETWEEN '2002-05-01' and '2002-05-31')
> )
> GROUP BY `iptypes`.`bg`, `ips`.`iptype`, `ips`.`name`, `ips`.`email`, `iptrafficlocal`.`ipfrom1`, `iptrafficlocal`.`ipfrom2`, `iptrafficlocal`.`ipfrom3`, `iptrafficlocal`.`ipfrom4`
>
> А именно это я и хотел получить.
>
> Что не так? Может нужно индексы сделать? Настройки MySQL?
> Я так понял что в моем случае легче первым запросом делать выборку во временную таблицу и дальше уже работать с ней, но это же не правильно.
>
>


From: Mielofon - 05/07/2002 - 12:24:06
Subject:Долго выполняется запрос
-----------------
Мне нужна статистика по всем IP из iptrafficlocal и по тем которые есть в ips мне нужна дополнительная информация.


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

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

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



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