Re: Consulta compleja

From: Fernando Hevia <fhevia(at)gmail(dot)com>
To: Ruben Fitó <r(dot)fito(at)ubiquat(dot)com>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Consulta compleja
Date: 2013-01-21 13:33:31
Message-ID: CAGYT1XTRq=2hLCB1deF2e2Ygb7EnGTg1jTjE8o54mC+YWBEz1Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2013/1/20 Ruben Fitó <r(dot)fito(at)ubiquat(dot)com>

> Gracias por las respuestas,
>
> En primer lugar, comentaros que he conseguido obtener el producto a través
> del producto_id.
>
> SELECT *tipo_producto* FROM *tabla_productos_por_cliente* WHERE *
> producto_id*~('^'||*tipo_producto*::TEXT) ORDER BY LENGTH(*tipo_producto*)
> DESC LIMIT 1;
>
> Con esta consulta me aseguro coger el tipo_producto que coincida con más
> "dígitos" de producto_id.
>
>
Hola. El algoritmo que aplicaste para buscar el producto se llama *best
matching* y se utiliza mucho en el dominio de la telefonía para identificar
a qué localidades pertenecen los números discados. En PostgreSQL existe el
módulo contrib PREFIX construido específicamente para simplificar y
acelerar este tipo de consultas: https://github.com/dimitri/prefix

Te servirá en caso de que necesites agilizar las consultas anteriores. El
uso de prefix es hasta 4 veces más rápido que la consulta que hiciste. Si
la performance no es un problema, probablemente no convenga incorporarlo.
Si bien es muy simple de hacerlo si requerirá que redefinas el tipo de dato
del campo código.

En fin, pensé podrían interesarte estos datos.

Saludos,
Fernando.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rafael Valenzuela 2013-01-21 13:36:28 Re: Consulta compleja
Previous Message Ruben Fitó 2013-01-20 12:54:22 Re: Consulta compleja