| 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: | Whole Thread | Raw Message | 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
| 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? |