Я, может, открою Америку, но IPv4 (впрочем, как и IPv6) в его привычном виде — это просто один из видов обозначения байтиков. А байтики можно представлять привычным числом в 10ричной системе. То есть, Q.W.E.P можно представить как Q<<8*3 + W<<8*2 + E<<8*1 + P
То есть, скажем, есть диапазон 192.168.1.1 – 192.168.8.255, нужно найти все айпишники в этом диапазоне, что есть в базе. 192.168.1.1 в нашем "отображении" будет выглядеть как 3232235777, а 192.168.8.255 — как 3232237823. Запрос в базу будет элементарный (WHERE ip >= 3232235777 AND ip <= 3232237823) и будет юзать btree и любой другой древовидный индекс.
Но вообще, у баз данных есть
собственные типы для хранения, которые могут учитывать и маску