Re: Consulta toma 100 Minutos!!??

From: Carlos Alberto Mÿffffffffffe1rquez Rey <carlos_marquez_rey(at)yahoo(dot)com>
To: Christian Compagnon <ccompagnon(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Consulta toma 100 Minutos!!??
Date: 2005-09-07 18:11:38
Message-ID: 20050907181138.98859.qmail@web50814.mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Christian

Esa demora bien puede ser por el uso del "not in"

Se me ocurre que podrias implementar una funcion que
te indique si el codigo rut esta en esa tablas, la
consulta quedaria asi

SELECT "Rut Cliente"
FROM "Internet_Abril"
WHERE f_xyz("Rut Cliente") = 'N'

y la funcion seria asi:

CREATE OR REPLACE FUNCTION public.f_xyz("varchar")
RETURNS "varchar" AS
$BODY$
declare
v_encontro varchar;
vo_codigo varchar;
i_count integer;
begin
v_encontro = 'N';
SELECT into i_count count("Rut Cliente")
FROM "Internet_Febrero"
WHERE "Rut Cliente" = $1;
if i_count > 0 then
v_encontro = 'S';
return v_encontro
end if;
SELECT into i_count count("Rut Cliente")
FROM "Internet_Marzo"
WHERE "Rut Cliente" = $1;
if i_count > 0 then
v_encontro = 'S';
return v_encontro
end if;
return v_encontro
end
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION f_xyz() OWNER TO postgres;

Pero me parece que tu diseño no es el adecuado, como
vas a manejar registros por año, pones tablaspara
enero, febrero, marzo, y cuando tengas registros de
enero del proximo año, como lo vas a manejar?

--- Christian Compagnon <ccompagnon(at)gmail(dot)com>
escribió:

> Hola
>
> Soy nuevo en postgresql, tuve que instalarlo porque
> Access no fue
> capaz de soportar las consultas, instalé postgres en
> una maquina con
> Windows XP ( No puedo usar linux, porque es el
> computador del trabajo
> ),
>
> Estoy realizando una consulta, y toma mucho tiempo
> en realizarse, como
> 100 minutos en un P4 de 2.8Ghz 512Mb RAM, la
> consulta es la siguiente:
>
> SELECT "Rut Cliente"
> FROM "Internet_Abril"
> WHERE "Rut Cliente" NOT IN ((SELECT "Rut Cliente"
> FROM
> "Internet_Enero") UNION (SELECT "Rut Cliente" FROM
> "Internet_Febrero") UNION (SELECT "Rut Cliente"
> FROM
> "Internet_Marzo"));
>
> Todas las tablas tienen indices creados( Rut Cliente
> es VarChar ), y
> las tablas tienen 50.000 registros en promedio.
>
> El explain de la consulta arroja lo siguiente.
>
> "QUERY PLAN
> Seq Scan on "Internet_Abril"
> (cost=19406.67..62126112.70 rows=24731 width=13)
> Filter: (NOT (subplan))
> SubPlan
> -> Materialize (cost=19406.67..21576.07
> rows=136740 width=13)
> -> Unique (cost=17784.23..18467.93
> rows=136740 width=13)
> -> Sort (cost=17784.23..18126.08
> rows=136740 width=13)
>
> Sort
> Key: "Rut Cliente"
> -> Append (cost=0.00..3741.80 rows=136740
> width=13)
> -> Subquery Scan "*SELECT* 1"
> (cost=0.00..1233.38
> rows=45069 width=13)
> -> Seq Scan on "Internet_Enero"
> (cost=0.00..782.69
> rows=45069 width=13)
> -> Subquery Scan "*SELECT* 2"
> (cost=0.00..1104.06
> rows=40353 width=13)
> -> Seq Scan on "Internet_Febrero"
> (cost=0.00..700.53
> rows=40353 width=13)
> -> Subquery Scan "*SELECT* 3"
> (cost=0.00..1404.36
> rows=51318 width=13)
> -> Seq Scan on "Internet_Marzo"
> (cost=0.00..891.18
> rows=51318 width=13)
>
> Cualquier ayuda se agradece, tengo que hacer 30
> consultas similiares
> para obtener los datos para mi tesis.
>
> saludos
> Christian
>
> ---------------------------(fin del
> mensaje)---------------------------
> TIP 2: puedes desuscribirte de todas las listas
> simultáneamente
> (envíe "unregister TuDirecciónDeCorreo" a
> majordomo(at)postgresql(dot)org)
>

***********************************************************
Carlos Márquez
***********************************************************

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ricardo David Carrillo Sánchez 2005-09-07 18:35:32 Otra ves con soporte para ssl
Previous Message Hugo Gamarra 2005-09-07 17:46:46 Re: Consulta toma 100 Minutos!!??