V naší aplikaci to přesně tak máme, v jednom sloupci IP, v druhém subnet. Pokud chci uložit jen jednu IP adresu, prostě se zadá 32 (jakože /32). Tady ty přepočty ale obstarává PHP část. Má to tu výhodu, že se s tím výborně počítá a navíc se to dá naprosto stejně použít pro IPv4 i IPv6.
Doporučil bych tedy přidat sloupec pro subnet a pak už je to o skriptu, který v každém řádku vezme tu adresu jako string a hledá v ní "/" (lomítko). Pokud nenajde, uloží subnet 32 a adresu nechá být. Pokud najde, uloží adresu samotnou a číslo za lomítkem uloží jako subnet (doporučuji přidat ověření, že tam nebude třeba /48 pro IPv4 a podobně), případně provede přepočet, pokud za tím lomítkem najde třeba 255.255.255.0 - přesně takový skript někde mám, jen ty řádky načítá z textového souboru namísto databáze (používal se při importu do databáze) - jestli ho najdu, hodím ho sem. Vrchol efektivity to není, ale na jednorázový import (případně občasný úklid) vyhovuje.