операция << для типа INET и проверка в IN - Mailing list pgsql-ru-general

From Serik
Subject операция << для типа INET и проверка в IN
Date
Msg-id 20070627090806.7lmdvfn06c8s8wg4@www.pochta.ru
Whole thread Raw
Responses Re: [pgsql-ru-general] операция << для типа INET и проверка в IN  ("Ivan Zolotukhin" <ivan.zolotukhin@gmail.com>)
List pgsql-ru-general

Добрый день !

 

есть запрос

 

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 

pgsql-ru-general by date:

Previous
From: "Nikolay Samokhvalov"
Date:
Subject: Re: Как добавть в PostgreSQL поддержку XML?
Next
From: "Ivan Zolotukhin"
Date:
Subject: Re: [pgsql-ru-general] операция << для типа INET и проверка в IN