young
Новичок
Определение страны по IP: оптимизация
Задача: получить страну по IP потратив минимум времени и ресурсов.
Текущее решение: есть упорядоченный список диапазонов IP:
ip_from int
ip_to int
country_id int
список диапазонов упорядочен, диапазоны между собой не пересекаются, всего их 70 000. Диапазон содержит от 1 до нескольких миллионов IP.
запрос select country_id from TBL where ip_from < A and ip_to > A limit 1 выполняется в среднем 0,02 секунды, что есть очень долго.
никакие индексы не помогают (пробовал хеш-индексы по ip_from / 2^24, просто индекс по ip_from, составной индекс) и прочие другие
из идей разве что составить таблицу соответствия
ip (int) primary key
country_id (int)
на 3 миллиона и делать выборку по primary key.
либо как-то на php прикручивать двоичный поиск.
других идей нет.
Ваши идеи?
Задача: получить страну по IP потратив минимум времени и ресурсов.
Текущее решение: есть упорядоченный список диапазонов IP:
ip_from int
ip_to int
country_id int
список диапазонов упорядочен, диапазоны между собой не пересекаются, всего их 70 000. Диапазон содержит от 1 до нескольких миллионов IP.
запрос select country_id from TBL where ip_from < A and ip_to > A limit 1 выполняется в среднем 0,02 секунды, что есть очень долго.
никакие индексы не помогают (пробовал хеш-индексы по ip_from / 2^24, просто индекс по ip_from, составной индекс) и прочие другие
из идей разве что составить таблицу соответствия
ip (int) primary key
country_id (int)
на 3 миллиона и делать выборку по primary key.
либо как-то на php прикручивать двоичный поиск.
других идей нет.
Ваши идеи?