Re: Ayuda con indices.

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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.