SQL(postgresql 8.4.x)で、可能性のある包含ネットブロックの最小COUNT
ネットブロック内にあるIPレコードの数を効率的にするにはどうすればよいですか?たとえば、との両方にカウントしたくありません。10.0.0.1
10/8
0/0
より具体的には、次のようになります。
-- CREATE TABLE iplog (ip INET NOT NULL, ...)
--
ip | ...
==============+=====
192.168.1.100 | ...
192.168.1.101 | ...
192.168.55.5 | ...
10.1.2.3 | ...
-- CREATE TABLE netblocks (nb CIDR UNIQUE NOT NULL, ...)
--
nb | ...
===============+======
192.168.1.0/24 | ...
192.168.0.0/16 | ...
10.0.0.0/8 | ...
0.0.0.0/0 | ...
結果セットを効率的に作成するにはどうすればよいですか。
nb | ips_logged
===============+============
192.168.1.0/24 | 2
192.168.0.0/16 | 1
10.0.0.0/8 | 1