|
|
|
Проверка IP на принадлежность к четырем уральским областям
|
|||
|---|---|---|---|
|
#18+
Задача: для имеющегося IP из базы получить ответ принадлежит ли этот IP Свердловской, Челябинской, Тюменской или Пермской области. Много лет пользуемся вот этой базой и сейчас у нас на серверах стоят таблицы: ip_from, ip_to, location_text по этим таблицам мы определяем город айпишника Как сейчас посоветуете изготовить новую таблицу под эту конкретную задачу, чтобы эту конкретную операцию проверки сжать до самой супер-быстрой скорости? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 01:29:56 |
|
||
|
Проверка IP на принадлежность к четырем уральским областям
|
|||
|---|---|---|---|
|
#18+
Адрес базы, которой пользуемся: http://ipgeobase.ru/cgi-bin/Archive.cgi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 01:30:26 |
|
||
|
Проверка IP на принадлежность к четырем уральским областям
|
|||
|---|---|---|---|
|
#18+
LumixКак сейчас посоветуете изготовить новую таблицу под эту конкретную задачу, чтобы эту конкретную операцию проверки сжать до самой супер-быстрой скорости?Зависит от требований этой и других задач. Если для этой задачи это очень остро, а другие можно в расчет не принимать, то можно и сделать отдельную таблицу. А еще у нас есть FAQ: Нахождение записей, где заданное значение находится между значениями полей , в т.ч. 9308178 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 08:19:15 |
|
||
|
Проверка IP на принадлежность к четырем уральским областям
|
|||
|---|---|---|---|
|
#18+
miksoftLumixКак сейчас посоветуете изготовить новую таблицу под эту конкретную задачу, чтобы эту конкретную операцию проверки сжать до самой супер-быстрой скорости?Зависит от требований этой и других задач. Если для этой задачи это очень остро, а другие можно в расчет не принимать, то можно и сделать отдельную таблицу. А еще у нас есть FAQ: Нахождение записей, где заданное значение находится между значениями полей , в т.ч. 9308178 . наверное я задачу плохо сформулировал, если вы даете ссылку на пример 9308178 моя задача не найти к какому региону принадлежит IP - в такой задаче на выходе всегда строка с именене региона в моей задаче на выходе всегда либо да, либо нет и да, эта задача очень критична и мы готовы под неё отдельную таблицу сделать я только не пойму зачем тут limit 1 и order by даже если order by и потребуется, то его лучше прошить на стадии create table, потому что порядок никогда не меняется - - - приведу пример моей задачи на простых числах допустим у нас заданы диапазоны чисел и этот набор диапазонов не меняется никогда и задан изначально Код: sql 1. Задача: максимально быстро определить входит число n в этот диапазон или нет то есть получить ответ: входит или не входит, да или нет, true or false, 1 или 0 а в какой именно из этих диапазонов оно входит вопрос не стоит вообще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 10:23:06 |
|
||
|
Проверка IP на принадлежность к четырем уральским областям
|
|||
|---|---|---|---|
|
#18+
примерное количество ip известно? преобразовать диапазон в последовательность , создать из последовательностей таблицу из 1 индекированоого столбца и проверять впростым where. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 12:34:52 |
|
||
|
Проверка IP на принадлежность к четырем уральским областям
|
|||
|---|---|---|---|
|
#18+
ip преобразовывать в число ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 12:35:54 |
|
||
|
Проверка IP на принадлежность к четырем уральским областям
|
|||
|---|---|---|---|
|
#18+
вадяпреобразовать диапазон в последовательность , создать из последовательностей таблицу из 1 индекированоого столбца и проверять впростым where.Это можно (и нужно делать) и без преобразования в последовательность. Именно с помощью ORDER BY col1 DESC LIMIT 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 12:37:36 |
|
||
|
Проверка IP на принадлежность к четырем уральским областям
|
|||
|---|---|---|---|
|
#18+
я думаю, если сделать таблицу (именно из последовательных значений) содержащую только значимые значения и отсортированную то будет быстрее с одним where получится set @find=0 select ip into @find from xx where ip=ip_in @find> найдено, иначе - нет без сортировки и лимита ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 12:49:52 |
|
||
|
Проверка IP на принадлежность к четырем уральским областям
|
|||
|---|---|---|---|
|
#18+
вадяя думаю, если сделать таблицу (именно из последовательных значений) содержащую только значимые значения и отсортированную то будет быстрее с одним where получится set @find=0 select ip into @find from xx where ip=ip_in @find> найдено, иначе - нет без сортировки и лимитаНет, быстрее не будет. Как минимум, из-за резкого увеличения объема индекса. И сортировка с лимитом в моем предложении - именно метод избежать этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 12:57:27 |
|
||
|
Проверка IP на принадлежность к четырем уральским областям
|
|||
|---|---|---|---|
|
#18+
тут не очень много ip - в таблице нужно будет оставить только те которые принадлежат нужным областям. ну и если уж надо повылить скорость - на хабре я находил методу как индексный файл располагать в ram диске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 13:08:31 |
|
||
|
Проверка IP на принадлежность к четырем уральским областям
|
|||
|---|---|---|---|
|
#18+
вадятут не очень много ipДа все равно смысла нет записи множить.вадяна хабре я находил методу как индексный файл располагать в ram диске.В которой так и не смогли аргументировать, чем предлагаемый метод лучше простого увеличения кэша индексов в самом MySQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 13:27:16 |
|
||
|
Проверка IP на принадлежность к четырем уральским областям
|
|||
|---|---|---|---|
|
#18+
miksoftвадятут не очень много ipДа все равно смысла нет записи множить тут надо знать конкретные цифры, сравнить... вадяна хабре я находил методу как индексный файл располагать в ram диске.В которой так и не смогли аргументировать, чем предлагаемый метод лучше простого увеличения кэша индексов в самом MySQL. тут надо сравнивать с цифрами в руках. там просто работающая рализаци, к сожалению без исследования... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 13:39:45 |
|
||
|
Проверка IP на принадлежность к четырем уральским областям
|
|||
|---|---|---|---|
|
#18+
вадяmiksoftпропущено... Да все равно смысла нет записи множить тут надо знать конкретные цифры, сравнить...По моему опыту, большинство диапазонов имеет размер от нескольких сотен до нескольких сотен тысяч адресов. Вот во столько раз и вырастет количество записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 13:43:58 |
|
||
|
Проверка IP на принадлежность к четырем уральским областям
|
|||
|---|---|---|---|
|
#18+
Lumixприведу пример моей задачи на простых числах допустим у нас заданы диапазоны чисел и этот набор диапазонов не меняется никогда и задан изначально Код: sql 1. Задача: максимально быстро определить входит число n в этот диапазон или нет то есть получить ответ: входит или не входит, да или нет, true or false, 1 или 0 а в какой именно из этих диапазонов оно входит вопрос не стоит вообще Код: sql 1. 2. 3. 4. Предполагается, что в таблице есть только целевые диапазоны. Если это не так, до нужно добавить условие на попадание в целевой диапазон в последней строке. Будет нужен индекс по полю ip_from. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 13:52:48 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38816832&tid=1833884]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 351ms |

| 0 / 0 |
