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)
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 |