Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-ru-general by date

Next:From: Evgeny M. BaldinDate: 2007-07-02 06:30:01
Subject: История о PostgreSQL
Previous:From: SerikDate: 2007-06-27 05:08:06
Subject: операция << для INET и проверка ▓┬╪╜╫p IN

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group