Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search archives
  Advanced Search

операция << для типа INET и проверка в IN





 Добрый день !

 есть запрос

 SELECT count(d_ip)
FROM traf_raw
WHERE (d_ip << '192.168/16'::inet )
 нужно '192.168/16'::inet заменить результатом выборки

 select subnet from network

 т.о. напрашивается проверка с IN, типа

 WHERE (d_ip  IN (select subnet from network) )

 вопрос: как сюда вставить "<<"

 чтобы была проверка адреса по маске ?

 обходные варианты

SELECT count(d_ip) FROM traf_raw tr
WHERE (exists (select 1 from network n where tr.d_ip << n.subnet
limit 1) )
 и

 select count(d_ip)
from network n
left join traf_raw tr on (tr.d_ip << n.subnet)
 рассматривались, но есть надежда, что запрос с IN будет быстрее :)

d_ip и subnet типа inet,
 в таблице network 2 записи, в traf_raw несколько миллионов,

 PostgreSQL 8.1.1 


Home | Main Index | Thread Index

Privacy Policy | About PostgreSQL
Copyright © 1996 – 2012 PostgreSQL Global Development Group