From: | Pablo Braulio <brulics(at)gmail(dot)com> |
---|---|
To: | dkuroki(at)dbas(dot)com(dot)ar |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Ayuda con indices. |
Date: | 2005-10-17 15:32:04 |
Message-ID: | 200510171732.07529.brulics@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El Lunes, 17 de Octubre de 2005 16:06, escribió:
> Pablo,
>
> En principio deberias analizar de crear indices sobre los campos
> implicados en los WHERE de tus consultas.
> Esto seria algo asi, por ej:
>
> SELECT * FROM rev_accesos WHERE campo1=100 AND campo2='descripcion'
>
> Este query puede ser ejecutado mas rapidamente si tenes un indice por
> campo1 y campo2.
> Ahora, si los 128265 registros de la tabla cumplen con la condicion
> (campo1=100 AND campo2='descripcion') no tiene sentido agregar un
> indice porque es preferible "barrer" toda la tabla y no entrar por el
> indice para obtener el mismo resultado.
> De hecho, agregar ese indice seria contraproducente para la performance.
>
> Si envias las consultas que le estas haciendo a la base, la lista te va
> poder ayudar con mas precision. De todas formas,espero que te ayude,
>
> Saludos,
>
>
Hola.
Concretamente. Esta es la estructura de una tabla.
\d rev_accesos;
Tabla «public.rev_accesos»
Columna | Tipo |
Modificadores
-------------------+------------------------+-------------------------------------------------------------
id | integer | not null default
nextval('public.rev_accesos_id_seq'::text)
empresa | character varying(6) | not null
equipo | character varying(20) |
usuario | character varying(40) | not null
programa | character varying(10) |
tipo_acceso | character varying(80) | not null
fecha | date | not null
hora | time without time zone | not null
fichero_accedido | character varying(200) |
registro_accedido | character varying(200) |
Índices:
«rev_accesos_pkey» PRIMARY KEY, btree (id)
Restricciones de llave foránea:
«$1» FOREIGN KEY (empresa) REFERENCES empresas(nick) ON UPDATE CASCADE ON
DELETE CASCADE
Las consultas que le hago:
$select= "select id, empresa, equipo, usuario, programa, tipo_acceso, fecha,
hora, fichero_accedido, registro_accedido from rev_accesos where fecha
between '".$fecha_desde."' and '".$fecha_hasta."' and empresa='".
$empresa."';";
Es decir, lo que hago es una consulta filtrando por fechas y demás.
¿dices que para estos casos no es conveniente usar indices?.
Gracias por la ayuda.
El problema (o questión), es que al hacer una consulta a esta tabla, tarda
mucho en ejecutarla. Mucho = 2 minutos (+ o -)
--
Saludos.
Pablo.
Fingerprint 5607 40CF 45EF D490 B794 5056 D7B2 C3DC ABF1 CE49
Jabber: bruli(at)myjabber(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Edwin Rey | 2005-10-17 16:21:47 | ayuda con createdb en Tiny ERP |
Previous Message | dkuroki | 2005-10-17 14:44:32 | Re: Ayuda con indices. |