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

From: "Ivan Zolotukhin" <ivan(dot)zolotukhin(at)gmail(dot)com>
To: Serik <uge(at)pochtamt(dot)ru>
Cc: pgsql-ru-general(at)postgresql(dot)org
Subject: Re: [pgsql-ru-general] операция << для типа INET и проверка в IN
Date: 2007-06-30 16:36:58
Message-ID: 751e56400706300936y797dea72m634b99803d7861ac@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

стандартное решение здесь WHERE EXISTS
разве оно дает плохой план выполнения запроса?

On 6/27/07, Serik <uge(at)pochtamt(dot)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

In response to

Browse pgsql-ru-general by date

  From Date Subject
Next Message Evgeny M. Baldin 2007-07-02 06:30:01 История о PostgreSQL
Previous Message Serik 2007-06-27 05:08:06 операция << для типа INET и проверка в IN