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




MySQL.RU - Webboard



Вернуться
Я удивлен чем удалось загрузить MySQL (Кирилл) 09/02/2006 - 09:10:57
      Re: Я удивлен чем удалось загрузить MySQL (DiGiTAL) 09/02/2006 - 18:37:08
      Re: Я удивлен чем удалось загрузить MySQL (Dinky) 09/02/2006 - 20:05:31
      Re: уж0с (Dinky) 09/02/2006 - 20:09:05
      Re: уж0с (DiGiTAL) 09/02/2006 - 20:41:51
      Re: уж0с (Dinky) 09/02/2006 - 21:50:21

> Original message text:
> From: Кирилл - 09/02/2006 - 09:10:57
> Subject:Я удивлен чем удалось загрузить MySQL
> -----------------
> Здравствуйте.
>
> Вот встала задача определения города по IP.
> Есть таблица (events), в которой хранятся нужные IP.
> Есть таблица (ip_table, в ней 42 тыщщи рядов), в которой есть интервалы апишников в целочисленном представлении (start_ip, end_ip) и ID сопоставленного города.
> Есть таблица (cities), в которой по ID города можно определить сам город.
>
> Конкретизируем. Надо получить все уникальные IP и их города на определенную дату. Запрос ниже. В таблицах по всем использованным в запросе полям стоят индексы.
> Проблема в том, что на хостинге это чудо секунд 10 думает, потом выдает Server shutdown in progress. Обращался к хостингу, они говорят что у меня слишком жирный запрос, надо, мол, его оптимизировать. И как ЭТО можно соптимизировать?
> Тут еще такой вопрос, что это все цветочки, мне бы надо еще JOIN, т.к. могут попасться такие айпишники, которых в базе городов не будет, а выводить их все равно надо. Пока привел упрощенный вариант, хоть бы его заставить работать.
>
> SELECT DISTINCT a.ip, c.city
> FROM events a, ip_table b, cities c
> WHERE
> DATE_FORMAT(DATE_ADD( a.timestamp, INTERVAL 3 HOUR), '%d.%m.%Y') = '08.02.2006'
> AND
> ( INET_ATON( a.ip ) BETWEEN b.start_ip AND b.end_ip)
> AND
> c.city_ID = b.city
>


From: DiGiTAL - 09/02/2006 - 18:37:08
Subject:Я удивлен чем удалось загрузить MySQL
-----------------
SELECT DISTINCT events.ip, cities.city FROM events LEFT JOIN ip_table ON (INET_ATON(events.ip) BETWEEN ip_table.start_ip AND ip_table.end_ip) INNER JOIN cities ON cities.city_ID=ip_table.city WHERE
DATE_FORMAT(DATE_ADD(events.timestamp, INTERVAL 3 HOUR), '%d.%m.%Y' = '08.02.2006'

вопрос не в том, как оптимизировать, а как написать, чтобы серверу было не больно... собственно, он должен выдавать ай-пи даже если с ним не связан ни один город


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

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

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



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