Re: [pgsql-ru-general] операция << для типа INET и проверка в IN
| От | Ivan Zolotukhin |
|---|---|
| Тема | Re: [pgsql-ru-general] операция << для типа INET и проверка в IN |
| Дата | |
| Msg-id | 751e56400706300936y797dea72m634b99803d7861ac@mail.gmail.com обсуждение исходный текст |
| Ответ на | операция << для типа INET и проверка в IN (Serik <uge@pochtamt.ru>) |
| Список | 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 по дате отправления: