Re: Ayuda con indices

From: roger gue <rockobop(at)gmail(dot)com>
To: Alicia Mc Millan Barrera <amcmillan(at)dgac(dot)cl>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ayuda con indices
Date: 2005-05-24 21:26:28
Message-ID: bd5aaa8a050524142638833e40@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Antes que nada Alicia y Jaime mil gracias por su colaboracion la
verdad q esta lista de ayuda es super .

Entonces dadas las tablas q tengo Jaime me aconsejarias utilizar
indices en vez de contraints asi como las manejo de esta forma

alter table actividad
add constraint fk_activida_de_cronogra foreign key (cod_cronograma)
references cronograma (cod_cronograma)
on delete restrict on update cascade;

alter table tarea
add constraint fk_tarea_a_tiene_activida foreign key
(cod_actividad) references actividad (cod_actividad)
on delete restrict on update cascade;

o algo q no entiendo es q los indices generan los constraints para
hacer referencia a las tablas de dependecia.

On 5/24/05, Alicia Mc Millan Barrera <amcmillan(at)dgac(dot)cl> wrote:
> La verdar es que no los he utilizado, así que no se que va ahí, yo también
> soy nueva en posgresql
> pero me funcionó creando los índices como te lo envié anteriormente, lo que
> sí le quité el UNIQUE al crear el
> indice, porque como los tengo como llave primaria, esto actua similar como
> llave primaria, si necesitas,
> también cree una función para ingresar, selecionar, modificar y eliminar en
> una tabla y los probé desde
> psql.
>
> Por lo menos funcionan.
>
>
> ----- Original Message -----
> From: "roger gue" <rockobop(at)gmail(dot)com>
> To: "Alicia Mc Millan Barrera" <amcmillan(at)dgac(dot)cl>
> Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
> Sent: Tuesday, May 24, 2005 12:58 PM
> Subject: Re: [pgsql-es-ayuda] Ayuda con indices
>
>
> ahh ok hao si me qudo clara la idea, solo una preguntita mas
> cuando voy a la ayuda de postgres me lanza lo siguiente:
>
> CREATE [ UNIQUE ] INDEX nombre_indice ON tabla
> [ USING nombre_acceso ] ( columna [ nombre_operador] [, ...] )
> CREATE [ UNIQUE ] INDEX nombre_indice ON tabla
> [ USING nombre_acceso ] ( nombre_funcion( r">columnale> [, ... ])
> nombre_operador )
>
> que puedo entender por nombre_acceso y nombre_operador, y si es q
> tuviera las tablas
>
> /*==============================================================*/
> /* table: cronograma */
> /*==============================================================*/
> create table cronograma (
> fecha date ,
> cod_cronograma varchar(10),
> constraint pk_cronograma primary key (cod_cronograma)
> );
>
> *==============================================================*/
> /* table: actividad */
> /*==============================================================*/
> create table actividad (
> cod_actividad varchar(10),
> cod_cronograma varchar(8),
> nombre_actividad varchar(30),
> constraint pk_actividad primary key (cod_actividad)
> );
>
> /*==============================================================*/
> /* table: tarea */
> /*==============================================================*/
> create table tarea (
> cod_tarea varchar(10) not null,
> cod_actividad varchar(10) null,
> nombre_tarea varchar(50) null,
> constraint pk_tarea primary key (cod_tarea)
> );
>
> alter table actividad
> add constraint fk_activida_de_cronogra foreign key (cod_cronograma)
> references cronograma (cod_cronograma)
> on delete restrict on update cascade;
>
> alter table tarea
> add constraint fk_tarea_a_tiene_activida foreign key
> (cod_actividad) references actividad (cod_actividad)
> on delete restrict on update cascade;
>
> si ya tengo esta base de datos, con llaves foraneas para cada tabla y
> como se ve cada una dependiente de la otra podria hacer algo asi
>
> CREATE INDEX ind_actv ON actiidad (cod_actividad);
>
> ALTER TABLEe tareaADD INDEX tarea_activ PRIMARY KEY (cod_tarea) USING
> INDEX ind_actv;
>
>
>
>
>
> On 5/24/05, Alicia Mc Millan Barrera <amcmillan(at)dgac(dot)cl> wrote:
> > No este solo estaba creando un indice a través de un script, que se llama
> > ("creationDateUser")
> > ahora cuando tu crees una función cuando filtres en un join, puedes
> hacerlo
> > a través de ese índice, la consulta sería mas rápida.
> > Ahora si tengo tablas que dependen de esta tabla, lo que hago es colocarle
> > la llave primaria de la tabla padre en la tabla hijo y
> > en la tabla hijo, coloco ambos campos como llave primaria de la tabla hijo
> > es decir,
> >
> > CONSTRAINT "tablahijo_LOGIN_PK" PRIMARY KEY (login, xxxx) USING INDEX
> > TABLESPACE indx_data
> >
> > , además creo indices separados en la tabla hijo.
> > Y como te digo cuando creas la función puedes accesar mas rapidamente la
> > tabla, solo para eso.
> >
> >
> > ----- Original Message -----
> > From: "roger gue" <rockobop(at)gmail(dot)com>
> > To: "Alicia Mc Millan Barrera" <amcmillan(at)dgac(dot)cl>
> > Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
> > Sent: Tuesday, May 24, 2005 12:13 PM
> > Subject: Re: [pgsql-es-ayuda] Ayuda con indices
> >
> >
> > si no entiendo mal lo q hace es q si se lo asocia a una funcion q
> > actualiza las fechas de ingreso de usuarios lo q hace el indice es
> > generar una actualizacion en la tabla, y si es q hubieran
> > dependendientes tb en ellas? espero haber entendido el ejemplo,
> > garcias Alicia por tu ayuda
> > suerte
> >
> > On 5/24/05, Alicia Mc Millan Barrera <amcmillan(at)dgac(dot)cl> wrote:
> > > Aqui te envio un scrip de prueba, que crea una tabla con sus indices a
> > modo
> > > de ejemplo
> > >
> > > -- Creación tabla PRUEBA
> > >
> > >
> > >
> > > CREATE TABLE "PRUEBA"
> > >
> > > (
> > >
> > > login char(15) NOT NULL,
> > >
> > > passw char(10) NOT NULL,
> > >
> > > "creationDateUser" date NOT NULL,
> > >
> > > "cellPhone" numeric,
> > >
> > > CONSTRAINT "PRUEBA_LOGIN_PK" PRIMARY KEY (login) USING INDEX TABLESPACE
> > > indx_data
> > >
> > > )
> > >
> > > WITHOUT OIDS TABLESPACE user_data;
> > >
> > > ALTER TABLE "PRUEBA" OWNER TO postgres;
> > >
> > > COMMENT ON TABLE "PRUEBA" IS 'Tabla de prueba';
> > >
> > > COMMENT ON COLUMN "PRUEBA".login IS 'Identificación del usuario';
> > >
> > > COMMENT ON COLUMN "PRUEBA".passw IS 'Contraseña del usuario';
> > >
> > > COMMENT ON COLUMN "PRUEBA"."creationDateUser" IS 'Fecha de Creación
> > > Usuario';
> > >
> > > COMMENT ON COLUMN "PRUEBA"."cellPhone" IS 'Celular del usuario';
> > >
> > > CREATE UNIQUE INDEX "PRUEBA_login_IDX" ON "PRUEBA"
> > >
> > > (login)
> > >
> > > TABLESPACE indx_data;
> > >
> > >
> > >
> > > CREATE INDEX "PRUEBA_creationDateUser_IDX" ON "PRUEBA"
> > >
> > > ("creationDateUser")
> > >
> > > TABLESPACE indx_data;
> > >
> > > GRANT SELECT, UPDATE, INSERT, DELETE ON "PRUEBA" TO PUBLIC;
> > >
> > > ----- Original Message -----
> > > From: "roger gue" <rockobop(at)gmail(dot)com>
> > > To: <pgsql-es-ayuda(at)postgresql(dot)org>
> > > Sent: Tuesday, May 24, 2005 11:45 AM
> > > Subject: [pgsql-es-ayuda] Ayuda con indices
> > >
> > >
> > > Hola atodos por lo q lei los indeces ayudan a optimizar la DB o algo
> > > por el estilo con funciones pero aun no se como implementarlos, si
> > > alguien me pudiese pasar un ejemplo pequeño de indices con funciones y
> > > decirme q es loq hace o darme la dir de algun tutorial se los
> > > agradeceria mucho, soy nuevo en esto de Postgresql
> > > gracias
> > > adios
> > >
> > > ---------------------------(fin del mensaje)---------------------------
> > > TIP 9: el optimizador ignorará el uso de recorridos de índice si los
> > > tipos de datos de las columnas no coinciden
> > >
> > >
> >
> >
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 3: si publicas/lees desde Usenet, por favor envía "subscribe-nomail"
> a majordomo(at)postgresql(dot)org para que tus mensajes puedan llegar
> a los suscriptores de la lista
>
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Mario Soto Cordones - Venezuela 2005-05-24 22:41:25 query plan
Previous Message Mario Soto Cordones - Venezuela 2005-05-24 21:07:42 Re: TRIGGERS: lo prometido es ....