![](/images/lev_menu.jpg)
![Новости](/images/a_news.jpg)
![Документация](/images/a_documents.jpg)
![Download](/images/a_download.jpg)
![Webboard](/images/a_webboard.jpg)
![Поиск](/images/a_searh.jpg)
![FAQ/ЧаВо](/images/a_faq.gif)
![Обратная связь](/images/a_mail.jpg)
|
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,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
26442
|
|