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

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search archives
  Advanced Search

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: Sat, 30 Jun 2007 20:36:58 +0400
  • Message-id: <751e56400706300936y797dea72m634b99803d7861ac@mail.gmail.com> <text/plain>

стандартное решение здесь 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


Home | Main Index | Thread Index

Privacy Policy | About PostgreSQL
Copyright © 1996 – 2012 PostgreSQL Global Development Group