Новости
Документация
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



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


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

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

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



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