Адреса выделяются пулами и в принципе можно смело использовать список пулов /24 — это 16 мб всего. которые легко можно вмести в таблицу в памяти. Вычисляете смещение и по смещению берёте индекс страны (стран в мире не больше 255). Так что задача вполне реализуема для быстрого поиска.
В этом случае таблицу можно вообще не хранить в БД (выигрыш как минимум во времени посылки пакетов), а в векторе, тогда получите максимальный выигрыш.