Justamente, ese es el problema, el campo RUC es un campo character para
ambas tablas (invitado y proveedor) debido a que por ciertas cuestiones de
proveedores se tienen registros con valores del tipo character ej
(X-18575,  E-4567),  por lo tanto se debio utilizar ese tipo de dato para
almacenar el RUC. el OR se agrego atendiento  que, el campo RUC en la tabla
invitado se puede realizar o no la carga del digito verificador, por lo
tanto habia que verificar esa situacion.

Gracias por la respuesta.

El 20 de abril de 2015, 10:43, Alvaro Herrera <alvhe...@2ndquadrant.com>
escribió:

> Diego Ayala escribió:
> > Buenos dias, me gustaria saber si existe alguna forma de optimizar esta
> > pequeña consulta que tengo, ya que el tiempo de duracion del mismo es de
> > casi 2,7 seg., me parece que es bastante, ya que sera un consulta
> bastante
> > usada por diferentes usuarios, por lo tanto quisiera saber que hacer.
> > Es un select que devolvera el listado de invitados a participar de una
> > licitacion, pero que se debe validar previamente si existe en una tabla
> de
> > registro de proveedores, por eso el LEFT JOIN.
> >
> > SELECT
> >       inv.id,
> >       inv.nombre AS razon_social,
> >       COALESCE(p.ruc || '-' || p.digito_verificador, p.ruc) AS ruc,
> >       inv.telefonos AS telefono,
> >       inv.email,
> >       COALESCE(p.sipe,false) AS _sipe
> >     FROM llamado_inv.llamado_invitado inv
> >     INNER JOIN llamado.llamado lla ON lla.id = inv.llamado_id
> >     LEFT JOIN provedor.proveedor p ON TRIM(inv.ruc) = p.ruc
> >      OR  TRIM(inv.ruc) = (p.ruc || '-' || p.digito_verificador)
> >     WHERE lla.slug = '286308-adquisicion-articulos-productos-limpieza-1'
> >       AND lla.publico = TRUE
>
> Sí, 2,7 segundos para esta consulta es grosero.
>
> Creo que tu problema es que las condiciones en RUC son muy feas.  Quita
> el dígito verificador (en realidad no necesitas almacenarlo), almacena
> el número del RUC en un campo numérico (integer) y haz JOINs normales.
> Nada de TRIM().  ¿Por qué el OR?
>
> --
> Álvaro Herrera                http://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
>

Responder a