Re: Optimizar Vista

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Raúl Andrés Duque <ra_duque(at)yahoo(dot)com(dot)mx>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Optimizar Vista
Date: 2007-04-27 13:12:07
Message-ID: 20070427131207.GC4645@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Raúl Andrés Duque escribió:

> Tengo una serie de vistas que realizan múltiples JOINs con el único
> objetivo de obtener las descripciones de las tablas asociadas. Estas
> vistas son usadas para realizar búsquedas desde una aplicación y es
> muy probable que las búsquedas se realicen por los campos descripción
> de las tablas asociadas.
>
> Qué indices debería usar para optimizar búsquedas en estas vistas??
>
> Por ahora se me ocurre crear índices por los campos descripción de
> cada una de las tablas relacionadas.

Dado que las búsquedas se harán por esos campos entonces tiene sentido
crear esos índices. Pero ojo! Si esas tablas son pequeñas (digamos
unos pocos cientos de registros o menos), entonces probablemente no
valga la pena tener esos índices, puesto que hacer búsquedas
secuenciales será tanto o más rápido que hacer recorridos de índice.

Te recomiendo hacer
ALTER TABLE foo ALTER descripcion SET STORAGE EXTERNAL

Lee
http://www.postgresql.org/docs/8.2/static/sql-altertable.html
y
http://www.postgresql.org/docs/8.2/static/storage-toast.html

Para saber si realmente los índices te sirven o no, haces esto sin tener
el índice:

-- esto te entrega el resultado sin índice
EXPLAIN ANALYZE SELECT ...
BEGIN;
CREATE INDEX foobar ON ...
-- repites el select de arriba y ahora te da el resultado con índice
EXPLAIN ANALYZE SELECT ...

COMMIT/ROLLBACK

Si el índice resulta ser provechoso, haces COMMIT y el índice queda
creado. Si no sirve, entonces haces ROLLBACK y automáticamente se
borra. (Otra alternativa es simplemente crear el índice y después hacer
un DROP INDEX si determinas que no te sirve).

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-04-27 13:58:23 Re: caracteres en UTF8
Previous Message Mario Gonzalez 2007-04-27 12:24:25 Re: Re: [pgsql-es-ayuda] Requerimientos mínimos de hardware/software