Re: Funcion inet2int - error

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Rubén da Silva <ruben(at)ozonomultimedia(dot)com>
Cc: postgresql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Funcion inet2int - error
Date: 2006-12-01 19:16:28
Message-ID: 20061201191628.GC3036@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Rubén da Silva escribió:
> Alvaro Herrera wrote:
> >Rubén da Silva escribió:
> >
> >>He creado una función para pasar de inet a entero largo (int8):
> >>
> >>==============
> >>
> >>CREATE OR REPLACE FUNCTION inet2int(inet "varchar")
> >> RETURNS information_schema.cardinal_number AS
> >
> >
> >Declarala como RETURNS int8. cardinal_number es un dominio sobre el
> >tipo int4.
> >
>
> OK. Perfecto. Gracias.
>
> Ahora que esto está solucionado, veo cuando la uso (con EXPLAIN ANALYZE)
> que usa un "seq scan" en lugar de un "index scan".
>
> Para ponernos en situación:
>
> Imaginemos que tengo rangos de ips almacenados en una tabla como enteros
> (int8) start y end.
>
> Tengo un index de estas columnas de enteros.

Mala idea -- podrias almacenar las IPs usando el tipo "inet". Hay
operadores para > y < para ese tipo que te facilitarian estas busquedas.

> SELECT id, blocks.ipnum_start, blocks.ipnum_end FROM blocks
> WHERE inet2int('unaIP') > blocks.ipnum_start AND inet2int('unaIP') <
> blocks.ipnum_end;

Cual es la definicion de la tabla, y que version de Postgres estas
usando?

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rubén da Silva 2006-12-01 19:29:31 Re: Funcion inet2int - error
Previous Message Alvaro Herrera 2006-12-01 19:06:39 Re: Configuracion optima para servidor postgres