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

операция << для INET и проверка ▓┬╪╜╫p IN

From: Serik <uge(at)pochtamt(dot)ru>
To: pgsql-ru-general(at)postgresql(dot)org
Subject: операция << для INET и проверка ▓┬╪╜╫p IN
Date: 2007-06-27 05:08:06
Message-ID: 20070627090806.7lmdvfn06c8s8wg4@www.pochta.ru (view raw or flat)
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

pgsql-ru-general by date

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

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