Что-то вроде
SELECT COUNT(*) AS c FROM BANS WHERE typeid=6 AND (SELECT ipaddr,cidr FROM BANS) MATCH AGAINST 'this_ip';
Итак, вы не сначала извлекаете все записи из БД, а затем сопоставляете их один за другим.
Если c > 0, то были сопоставлены.
Таблица BANS:
id int auto incr PK
typeid TINYINT (1=hostname, 4=ipv4, 6=ipv6)
ipaddr BINARY(128)
cidr INT
host VARCHAR(255)
DB: MySQL 5
Тип IP и IPv (4 или 6) известен при запросе.
IP, например: 1 в двоичном формате
BANNED IP: например: 1/64