From: | Vida Luz <vlal(at)ns(dot)ideay(dot)net(dot)ni> |
---|---|
To: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
Cc: | Leonel <lnunez(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Trabajando con Grandes BD |
Date: | 2007-03-14 23:18:21 |
Message-ID: | Pine.LNX.4.64.0703141714020.20260@ns.ideay.net.ni |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola a todos,
En un servidor con las mismas caracteristicas en el que tengo
fedora con postgresql, instalaron windows 2003 server con SQL server, se
cargo la tabla ahi, y resulta que se hizo un query SELECT count(distinct
cliente_cod) FROM dm.venta GROUP BY geren_cod y el resultado fue de 1.2
segundos, sin haber indexado.
Yo no trabajo con SQL server menos windows, el problema es que este sql
server nos bulgareo en el performance del query.
Que hay de malo con posgresql, que la consulta tarda tanto, que tunning
hay que hacer ?, dado que en el sqlserver ni se indexo ni tampoc se
hicieron vistas materializadas.
Que me aconsejan ?
Saludos,
"La Vida"
On Wed, 14 Mar 2007, Alvaro Herrera wrote:
> Vida Luz escribió:
>> con explain este es el costo que se tiene: aporx unos 2.7 minutos.
>>
>>
>>
>> c=# explain analyze SELECT count(distinct cliente_cod) FROM dm.venta GROUP
>> BY geren_cod;
>> QUERY PLAN
>> ---------------------------------------------------------------------------------------------------------------------------------
>> GroupAggregate (cost=421813.88..437247.45 rows=3 width=14) (actual
>> time=159638.993..165536.431 rows=3 loops=1)
>> -> Sort (cost=421813.88..426958.39 rows=2057804 width=14) (actual
>> time=152000.054..158792.629 rows=2057804 loops=1)
>> Sort Key: geren_cod
>> -> Seq Scan on venta (cost=0.00..180972.04 rows=2057804
>> width=14) (actual time=3.358..29855.519 rows=2057804 loops=1)
>> Total runtime: 166281.479 ms
>> (5 rows)
>
> El problema aca es que count() requiere recorrer la tabla completa, a
> diferencia de otros sistemas gestores de datos. Hay maneras mucho mas
> rapidas de obtener valores aproximados, por ejemplo puedes usar esta
> funcion:
>
> create or replace function estimated_count(text) returns float8 as $$
> declare r text;
> begin
> for r in execute 'explain ' || $1 loop
> return substring(r from 'rows=([0-9]+) ');
> end loop;
> end$$ language plpgsql strict;
>
> Uno de los hilos donde se menciona este tema es aca:
> http://archives.postgresql.org/pgsql-hackers/2006-10/msg01159.php
> donde hay otras soluciones alternativas.
>
> Esto lo encontre en http://search.postgresql.org haciendo click en
> "archive search" y usando las palabras clave "count estimated plpgsql".
> Seguro que puedes encontrar mas informacion util de ese modo.
>
>
> Hmm, me acabo de dar cuenta que tienes count(distinct) :-( Ese seria un
> problema un poco distinto ... usando "count distinct" en la pagina de
> busqueda aparece este thread que es de tu mismo tema:
> http://archives.postgresql.org/pgsql-performance/2007-01/msg00412.php
>
> Ojala te sirva ...
>
> Con respecto a vistas materializadas, pon "materialized" en la pagina de
> busqueda y mira los links "recomendados".
>
>
>From pgsql-es-ayuda-owner(at)postgresql(dot)org Thu Mar 15 08:23:15 2007
Received: from localhost (maia-2.hub.org [200.46.204.187])
by postgresql.org (Postfix) with ESMTP id 9CCE49FB2AC
for <pgsql-es-ayuda-postgresql(dot)org(at)postgresql(dot)org>; Thu, 15 Mar 2007 08:23:14 -0300 (ADT)
Received: from postgresql.org ([200.46.204.71])
by localhost (mx1.hub.org [200.46.204.187]) (amavisd-new, port 10024)
with ESMTP id 45420-08 for <pgsql-es-ayuda-postgresql(dot)org(at)postgresql(dot)org>;
Thu, 15 Mar 2007 08:23:06 -0300 (ADT)
X-Greylist: domain auto-whitelisted by SQLgrey-1.7.4
Received: from web34715.mail.mud.yahoo.com (web34715.mail.mud.yahoo.com [209.191.68.164])
by postgresql.org (Postfix) with SMTP id 8EEB49FB289
for <pgsql-es-ayuda(at)postgresql(dot)org>; Thu, 15 Mar 2007 08:23:10 -0300 (ADT)
Received: (qmail 30272 invoked by uid 60001); 15 Mar 2007 11:23:09 -0000
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
s=s1024; d=yahoo.com;
h=Message-ID:X-YMail-OSG:Received:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding;
b=WdB7qJY5QCvBkWOe4x842/44EF6z6BcE/iaDHzvWobRUGoOokk0ewxD3ESNxs6INntokrfw+r1Uv6W0X3KoOi1LWEKXa5bITOUSS1Jm6WDK5zG6z4qO5zqgoyIlG4foIkavyqLeaexaDko5LH4M3fhmJ5t5fXOfg8K3lwj0ucZs= ;
Message-ID: <20070315112309(dot)30270(dot)qmail(at)web34715(dot)mail(dot)mud(dot)yahoo(dot)com>
X-YMail-OSG: x_HZyC8VM1nhQ6S0ZGdWiHF6Vxl9Q3RujuAnGoDa7LV2bUKxyVHvHl6UYlbAZDdEEQlf_ytZsq0NQHgOo8IIHms_hd8VsezOqMU7QFokhloQhv8qh2a5.akukvi_aMaNit6RP1Vr1ixJYAiJeqXVeR6Ctg--
Received: from [190.64.207.209] by web34715.mail.mud.yahoo.com via HTTP; Thu, 15 Mar 2007 06:23:09 CDT
Date: Thu, 15 Mar 2007 06:23:09 -0500 (CDT)
From: Gabriel Colina <colina_movil(at)yahoo(dot)com>
Subject: Re: Ayuda con vistas actualizables.
To: Jaime Casanova <systemguards(at)gmail(dot)com>,
Jairo Grateron <jgrateron(at)gmail(dot)com>
Cc: Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
In-Reply-To: <c2d9e70e0703142250k4a4f4b6ew36038ff78be64ede(at)mail(dot)gmail(dot)com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Virus-Scanned: Maia Mailguard 1.0.1
X-Spam-Status: No, hits=3.142 tagged_above=0 required=5 tests=AWL, BAYES_50,
DNS_FROM_RFC_ABUSE, DNS_FROM_RFC_POST, DNS_FROM_RFC_WHOIS
X-Spam-Level: ***
X-Archive-Number: 200703/473
X-Sequence-Number: 25728
--- Jaime Casanova <systemguards(at)gmail(dot)com> escribió:
> On 3/12/07, Jairo Grateron <jgrateron(at)gmail(dot)com>
> wrote:
> > Hola a todos
> >
> > Parece una locura pero necesito crear una clave
> primaria para una vista,
> >
>
> no puedes, las vistas no son tablas y no tienen
> datos asi que no hay
> nada contra que crear la clave primaria... los
> constraints (pk
> incluidos) e indices debes crearlos sobre las tablas
> en las que este
> basada tu vista.
>
> > Estoy utilizando delphi con zeoslib y tengo una
> vista que tiene las reglas
> > de insert, update y delete, pero zeoslib antes de
> actualizar un registro de
> > una tabla primero pregunta si tiene clave primaria
> >
> [...]
> >
> > Alguna sugerencia?
> >
>
> si es como describes, cambia de lenguaje...
>
>
> --
> Atentamente,
> Jaime Casanova
>
> "Programming today is a race between software
> engineers striving to
> build bigger and better idiot-proof programs and the
> universe trying
> to produce bigger and better idiots.
> So far, the universe is winning."
> Richard Cook
>
> ---------------------------(fin del
> mensaje)---------------------------
> TIP 10: visita nuestro canal de IRC #postgresql-es
> en irc.freenode.net
>
O conectate via ODBC ???,
Salvo que te pase con zeo, lo que pasa con la
vinculacion de tablas y vistas en Access 97, que te
pide campo clave, pero no es para generar en la vista
de la BD, es para que los reportes y consultas tengan
un pre ordenamiento en el vinculo de la herramienta
cliente. No se si queda claro.
Atte. Gabriel Colina
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/
From | Date | Subject | |
---|---|---|---|
Next Message | Gabriel Colina | 2007-03-14 23:56:25 | Re: Simbolos dentro de cadenas y el codigo propuesto |
Previous Message | Mario Cassanelli | 2007-03-14 23:04:18 | pasar DBF's a Postgresql |