Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проверка IP на принадлежность к четырем уральским областям / 14 сообщений из 14, страница 1 из 1
26.11.2014, 01:29:56
    #38816832
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка IP на принадлежность к четырем уральским областям
Задача: для имеющегося IP из базы получить ответ принадлежит ли этот IP Свердловской, Челябинской, Тюменской или Пермской области. Много лет пользуемся вот этой базой и сейчас у нас на серверах стоят таблицы:

ip_from, ip_to, location_text

по этим таблицам мы определяем город айпишника

Как сейчас посоветуете изготовить новую таблицу под эту конкретную задачу, чтобы эту конкретную операцию проверки сжать до самой супер-быстрой скорости?
...
Рейтинг: 0 / 0
26.11.2014, 01:30:26
    #38816833
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка IP на принадлежность к четырем уральским областям
Адрес базы, которой пользуемся: http://ipgeobase.ru/cgi-bin/Archive.cgi
...
Рейтинг: 0 / 0
26.11.2014, 08:19:15
    #38816902
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка IP на принадлежность к четырем уральским областям
LumixКак сейчас посоветуете изготовить новую таблицу под эту конкретную задачу, чтобы эту конкретную операцию проверки сжать до самой супер-быстрой скорости?Зависит от требований этой и других задач. Если для этой задачи это очень остро, а другие можно в расчет не принимать, то можно и сделать отдельную таблицу.

А еще у нас есть FAQ: Нахождение записей, где заданное значение находится между значениями полей , в т.ч. 9308178 .
...
Рейтинг: 0 / 0
26.11.2014, 10:23:06
    #38817012
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка IP на принадлежность к четырем уральским областям
miksoftLumixКак сейчас посоветуете изготовить новую таблицу под эту конкретную задачу, чтобы эту конкретную операцию проверки сжать до самой супер-быстрой скорости?Зависит от требований этой и других задач. Если для этой задачи это очень остро, а другие можно в расчет не принимать, то можно и сделать отдельную таблицу.

А еще у нас есть FAQ: Нахождение записей, где заданное значение находится между значениями полей , в т.ч. 9308178 .

наверное я задачу плохо сформулировал, если вы даете ссылку на пример 9308178
моя задача не найти к какому региону принадлежит IP - в такой задаче на выходе всегда строка с именене региона
в моей задаче на выходе всегда либо да, либо нет
и да, эта задача очень критична и мы готовы под неё отдельную таблицу сделать

я только не пойму зачем тут limit 1 и order by
даже если order by и потребуется, то его лучше прошить на стадии create table, потому что порядок никогда не меняется

- - -

приведу пример моей задачи на простых числах

допустим у нас заданы диапазоны чисел и этот набор диапазонов не меняется никогда и задан изначально

Код: sql
1.
2-5, 9-9, 12-12, 19-25, 28-31, 48-55



Задача: максимально быстро определить входит число n в этот диапазон или нет
то есть получить ответ: входит или не входит, да или нет, true or false, 1 или 0
а в какой именно из этих диапазонов оно входит вопрос не стоит вообще
...
Рейтинг: 0 / 0
26.11.2014, 12:34:52
    #38817187
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка IP на принадлежность к четырем уральским областям
примерное количество ip известно?
преобразовать диапазон в последовательность , создать из последовательностей таблицу из 1 индекированоого столбца
и проверять впростым where.
...
Рейтинг: 0 / 0
26.11.2014, 12:35:54
    #38817188
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка IP на принадлежность к четырем уральским областям
ip преобразовывать в число
...
Рейтинг: 0 / 0
26.11.2014, 12:37:36
    #38817196
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка IP на принадлежность к четырем уральским областям
вадяпреобразовать диапазон в последовательность , создать из последовательностей таблицу из 1 индекированоого столбца
и проверять впростым where.Это можно (и нужно делать) и без преобразования в последовательность. Именно с помощью ORDER BY col1 DESC LIMIT 1.
...
Рейтинг: 0 / 0
26.11.2014, 12:49:52
    #38817212
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка IP на принадлежность к четырем уральским областям
я думаю, если сделать таблицу (именно из последовательных значений) содержащую только значимые значения и отсортированную
то будет быстрее с одним where
получится
set @find=0
select ip into @find from xx where ip=ip_in

@find> найдено, иначе - нет


без сортировки и лимита
...
Рейтинг: 0 / 0
26.11.2014, 12:57:27
    #38817231
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка IP на принадлежность к четырем уральским областям
вадяя думаю, если сделать таблицу (именно из последовательных значений) содержащую только значимые значения и отсортированную
то будет быстрее с одним where
получится
set @find=0
select ip into @find from xx where ip=ip_in

@find> найдено, иначе - нет


без сортировки и лимитаНет, быстрее не будет. Как минимум, из-за резкого увеличения объема индекса. И сортировка с лимитом в моем предложении - именно метод избежать этого.
...
Рейтинг: 0 / 0
26.11.2014, 13:08:31
    #38817241
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка IP на принадлежность к четырем уральским областям
тут не очень много ip - в таблице нужно будет оставить только те которые принадлежат нужным областям.
ну и если уж надо повылить скорость - на хабре я находил методу как индексный файл располагать в ram диске.
...
Рейтинг: 0 / 0
26.11.2014, 13:27:16
    #38817281
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка IP на принадлежность к четырем уральским областям
вадятут не очень много ipДа все равно смысла нет записи множить.вадяна хабре я находил методу как индексный файл располагать в ram диске.В которой так и не смогли аргументировать, чем предлагаемый метод лучше простого увеличения кэша индексов в самом MySQL.
...
Рейтинг: 0 / 0
26.11.2014, 13:39:45
    #38817300
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка IP на принадлежность к четырем уральским областям
miksoftвадятут не очень много ipДа все равно смысла нет записи множить

тут надо знать конкретные цифры, сравнить...
вадяна хабре я находил методу как индексный файл располагать в ram диске.В которой так и не смогли аргументировать, чем предлагаемый метод лучше простого увеличения кэша индексов в самом MySQL.
тут надо сравнивать с цифрами в руках. там просто работающая рализаци, к сожалению без исследования...
...
Рейтинг: 0 / 0
26.11.2014, 13:43:58
    #38817308
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка IP на принадлежность к четырем уральским областям
вадяmiksoftпропущено...
Да все равно смысла нет записи множить

тут надо знать конкретные цифры, сравнить...По моему опыту, большинство диапазонов имеет размер от нескольких сотен до нескольких сотен тысяч адресов. Вот во столько раз и вырастет количество записей.
...
Рейтинг: 0 / 0
26.11.2014, 13:52:48
    #38817320
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка IP на принадлежность к четырем уральским областям
Lumixприведу пример моей задачи на простых числах

допустим у нас заданы диапазоны чисел и этот набор диапазонов не меняется никогда и задан изначально

Код: sql
1.
2-5, 9-9, 12-12, 19-25, 28-31, 48-55




Задача: максимально быстро определить входит число n в этот диапазон или нет
то есть получить ответ: входит или не входит, да или нет, true or false, 1 или 0
а в какой именно из этих диапазонов оно входит вопрос не стоит вообще
Код: sql
1.
2.
3.
4.
SELECT COUNT(*)
FROM
  (SELECT ip_to FROM mytable WHERE :my_ip >= ip_from ORDER BY ip_from DESC LIMIT 1) tt
WHERE :my_ip <= tt.ip_to

Предполагается, что в таблице есть только целевые диапазоны. Если это не так, до нужно добавить условие на попадание в целевой диапазон в последней строке.
Будет нужен индекс по полю ip_from.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проверка IP на принадлежность к четырем уральским областям / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]