Re: Ayuda con indices.

From: " Víctor Daniel Poblete " <victorkenpo(at)gmail(dot)com>
To: "Pablo Braulio" <brulics(at)gmail(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda con indices.
Date: 2005-10-17 20:04:23
Message-ID: 435403C7.000001.04592@BKT
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

te conviene crear indices para las fechas y empresa, los índices los creas
para agilizar las busquedas, para que el motor haga el ordenamiento segun lo
que estas buscando

-------Mensaje original-------

De: Pablo Braulio
Fecha: 10/17/05 12:33:54
Para: dkuroki(at)dbas(dot)com(dot)ar
CC: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Ayuda con indices.

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

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rafael De_Linares 2005-10-17 20:17:19 Re: FATAL unsupported frontend protocol
Previous Message cristian 2005-10-17 19:59:04 ayuda pg_dump