Re: Optimizar consulta

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Diego Ayala <netdiego81(at)gmail(dot)com>
Cc: Postgres Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Optimizar consulta
Date: 2015-04-20 14:43:01
Message-ID: 20150420144301.GS4369@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Diego Ayala 2015-04-20 15:03:55 Re: Optimizar consulta
Previous Message Diego Ayala 2015-04-20 13:13:05 Optimizar consulta