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

From Ivan Zolotukhin
Subject Re: [pgsql-ru-general] операция << для типа INET и проверка в IN
Date
Msg-id 751e56400706300936y797dea72m634b99803d7861ac@mail.gmail.com
Whole thread Raw
In response to операция << для типа INET и проверка в IN  (Serik <uge@pochtamt.ru>)
List pgsql-ru-general
стандартное решение здесь WHERE EXISTS
разве оно дает плохой план выполнения запроса?

On 6/27/07, Serik <uge@pochtamt.ru> wrote:
>
>
> Добрый день !
>
>
>
> есть запрос
>
>
>
> 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: Serik
Date:
Subject: операция << для типа INET и проверка в IN
Next
From: "Evgeny M. Baldin"
Date:
Subject: История о PostgreSQL