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

From: Serik <uge(at)pochtamt(dot)ru>
To: pgsql-ru-general(at)postgresql(dot)org
Subject: операция << для типа INET и проверка в IN
Date: 2007-06-27 05:08:06
Message-ID: 20070627090806.7lmdvfn06c8s8wg4@www.pochta.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

Responses

Browse pgsql-ru-general by date

  From Date Subject
Next Message Ivan Zolotukhin 2007-06-30 16:36:58 Re: [pgsql-ru-general] операция << для типа INET и проверка в IN
Previous Message Nikolay Samokhvalov 2007-06-23 07:44:21 Re: Как добавть в PostgreSQL поддержку XML?