Re: Mejorar Rendimiento

From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: Felipe Fernandez <danielfm(at)teleline(dot)es>
Cc: postgresql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Mejorar Rendimiento
Date: 2004-07-13 04:10:48
Message-ID: 20040713041048.GI5729@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Tue, Jul 13, 2004 at 04:39:13AM +0100, Felipe Fernandez wrote:

> CREATE TABLE abonados (
> codigo numeric NOT NULL PRIMARY KEY,
> nombre text,
> apellido1 character varying(40),
> apellido2 character varying(40),
> direccion1 text,
> direccion2 character varying(40),
> direccion3 character varying(40),
> localidad integer,
> provincia integer,
> codigopostal character varying(6),
> telefono1 character varying(9),
> telefono2 character varying(9),
> observaciones text,
> actividad1 integer,
> actividad2 integer,
> tipoalta smallint,
> estado smallint
> );

Es muy desaconsejable que la llave primaria sea NUMERIC. Mucho mejor es
tener INTEGER o BIGINT si crees que superaras los cuatro mil millones.

Tienes algun indice en esta tabla, aparte del indice de la llave
primaria?

Si tuvieras el siguiente indice
CREATE INDEX foo on abonados (upper(apellido1) varchar_pattern_ops);

podrias probar

EXPLAIN select * from abonados where upper(apellido1) like 'FERNANDEZ%'
and upper(nombre) like 'FELIPE%' order by apellido1,apellido2,nombre;

Ojo con los % ... No puedes poner % ni _ al principio, de lo contrario
no se usara el indice.

--
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"Tiene valor aquel que admite que es un cobarde" (Fernandel)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2004-07-13 04:49:08 Re: Mejorar Rendimiento
Previous Message Alvaro Herrera 2004-07-13 03:47:44 Re: modelar base de datos