RE: Mejorar performance de un query.

From: "Esteban Osorio" <eosorio(at)economia(dot)cl>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Mejorar performance de un query.
Date: 2007-05-07 17:21:10
Message-ID: 5F3665C0E294BC43B3A635CA66D94B74013E1F87@buzones.economia.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Aquí va un script de las tablas y sus índices...

CREATE TABLE docto
(
barra numeric(9) NOT NULL,
tipo numeric(9),
numero character(9),
fecha date,
origen numeric(9),
accion numeric(9),
cooperativa numeric(9),
referencia text,
fechcreacion date,
grupo numeric(3),
origen2 character varying(50),
notas text,
copia numeric(3) NOT NULL DEFAULT 1,
sin_uso numeric(9),
asoc_gremial character(10),
antecedente1 numeric(9),
antecedente2 numeric(9),
antecedente3 numeric(9),
antecedente4 numeric(9),
CONSTRAINT pk_docto PRIMARY KEY (barra, copia),
CONSTRAINT fk_docto_reference_accion FOREIGN KEY (accion)
REFERENCES accion (cod_accion) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fk_docto_reference_asoc_gre FOREIGN KEY (sin_uso)
REFERENCES asoc_gremial (cod_gremial) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fk_docto_reference_cooperat FOREIGN KEY (cooperativa)
REFERENCES cooperativa (num_rol) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fk_docto_reference_origen FOREIGN KEY (origen)
REFERENCES origen (cod_origen) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fk_docto_reference_tipo FOREIGN KEY (tipo)
REFERENCES tipo (cod_tipo) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT
)

-- Index: docto_pk
CREATE UNIQUE INDEX docto_pk
ON docto
USING btree
(barra, copia);

-- Index: idx_docto_barra
CREATE INDEX idx_docto_barra
ON docto
USING btree
(barra);

-- Index: idx_docto_copia
CREATE INDEX idx_docto_copia
ON docto
USING btree
(copia);

-- Index: idx_docto_origen
CREATE INDEX idx_docto_origen
ON docto
USING btree
(origen);

-- Index: idx_docto_tipo
CREATE INDEX idx_docto_tipo
ON docto
USING btree
(tipo);

CREATE TABLE historia
(
barra numeric(9),
cod_usuario numeric(9),
cod_archivador numeric(9),
correlativo serial NOT NULL,
movimiento character(1),
fecha date,
computador character varying(15),
actual numeric(9),
comodin numeric(9),
copia numeric(3) DEFAULT 1,
hora time without time zone,
CONSTRAINT pk_historia PRIMARY KEY (correlativo),
CONSTRAINT fk_historia_actual_ref_usuar FOREIGN KEY (actual)
REFERENCES tb_usuario (cod_usuario) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fk_historia_comodin_ref_usuar FOREIGN KEY (comodin)
REFERENCES tb_usuario (cod_usuario) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fk_historia_reference_carpetas FOREIGN KEY (cod_archivador)
REFERENCES carpetas_archivo (cod_archivador) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fk_historia_reference_docto FOREIGN KEY (barra, copia)
REFERENCES docto (barra, copia) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT fk_historia_usuario_ref_usuar FOREIGN KEY (cod_usuario)
REFERENCES tb_usuario (cod_usuario) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT
)

-- Index: historia_pk
CREATE UNIQUE INDEX historia_pk
ON historia
USING btree
(correlativo);

-- Index: idx_hist_barra_copia_comodin_actual
CREATE INDEX idx_hist_barra_copia_comodin_actual
ON historia
USING btree
(barra, copia, comodin, actual, fecha);

-- Index: idx_hist_fecha
CREATE INDEX idx_hist_fecha
ON historia
USING btree
(fecha);

-- Index: idx_historia_barra
CREATE INDEX idx_historia_barra
ON historia
USING btree
(barra);

-- Index: idx_historia_copia
CREATE INDEX idx_historia_copia
ON historia
USING btree
(copia);

-- Index: reference_10_fk
CREATE INDEX reference_10_fk
ON historia
USING btree
(cod_usuario);

-- Index: reference_19_fk
CREATE INDEX reference_19_fk
ON historia
USING btree
(cod_archivador);

-- Index: reference_20_fk
CREATE INDEX reference_20_fk
ON historia
USING btree
(comodin);

-- Index: reference_21_fk
CREATE INDEX reference_21_fk
ON historia
USING btree
(actual);

-- Index: reference_9_fk
CREATE INDEX reference_9_fk
ON historia
USING btree
(barra, copia);

CREATE TABLE tb_usuario
(
cod_usuario numeric(9) NOT NULL,
nombre character varying(50),
"password" character(8),
tipo character(1),
estado character(1),
"login" character(12),
CONSTRAINT pk_tb_usuario PRIMARY KEY (cod_usuario)
)

-- Index: tb_usuario_pk
CREATE UNIQUE INDEX tb_usuario_pk
ON tb_usuario
USING btree
(cod_usuario);

Saludos,
Esteban Osorio.

-----Mensaje original-----
De: usuario anonimo [mailto:opinante(dot)anonimo(at)gmail(dot)com]
Enviado el: Viernes, 04 de Mayo de 2007 20:40
Para: Esteban Osorio
CC: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Mejorar performance de un query.

El 4/05/07, Esteban Osorio <eosorio(at)economia(dot)cl> escribió:
>
>
>
>
> Hola a todos,
>
>
>
> Tengo una consulta que esta tomando mucho tiempo en ejecutarse y quisiera
> saber si alguien me puede dar luces para mejorar esto. La consulta es la
> siguiente:
>
[..]
>
>
> Prácticamente todos los campos involucrados, menos los de naturaleza de
> caracteres, tienen índices que utilizan btree. Además la tabla historia
> tiene alrededor de 1,5 millones de registros.
>
>
>
> Alguna sugerencia???

Puedes entregar un script de creación de las tablas ?

>
> Saludos,
>
> Esteban Osorio.

--
_________________________________
Solo soy una mente genial en un cuerpo

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Arturo Munive 2007-05-07 17:23:11 Re: Herencia?
Previous Message Arturo Munive 2007-05-07 17:20:15 Re: Herencia?