From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | Carlos Jordán <carlos(at)openland(dot)es> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Duda sobre rendimiento. |
Date: | 2005-08-12 17:44:45 |
Message-ID: | 20050812174445.GB16953@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Fri, Aug 12, 2005 at 07:07:46PM +0200, Carlos Jordán wrote:
> El hecho de generar relaciones entre tablas de un base de datos en
> postgres aumenta la velocidad de las consultas sobre esta, o sólo
> sirve para que cuando borrar un registro de una tabla principal se
> borre en el resto de tablas relacionadas. ???
Generar relaciones de llaves foraneas no acelera las consultas. Solo
sirve para que cuando se hagan modificaciones en la tabla referida, la
tabla "referente" siga siendo consistente, via una de varias
estrategias: ya sea restringiendo, o bien haciendo borrados o
actualizaciones en cascada, etc.
> Es necesario generar un campo clave obligatoriamente por tabla
> para que un indice generado sea eficiente ???
No un campo clave (PRIMARY KEY), pero si una restriccion de unicidad
(UNIQUE). Esto en la tabla referida. En la tabla referente, no es
obligatorio, pero si la tabla va a crecer, se sugiere que tengas un
indice en los campos de la referencia. Esto, porque cuando quieras
borrar o actualizar datos de la tabla referida, el sistema tiene que
chequear la otra tabla; y si no tienes un indice, va a tener que hacer
un recorrido secuencial y se va a demorar bastante.
Ahora, si la tabla referente es pequeña, entonces no es necesario. Por
este motivo Postgres no te obliga a hacerlo ni lo hace automaticamente.
--
Alvaro Herrera (<alvherre[a]alvh.no-ip.org>)
"La espina, desde que nace, ya pincha" (Proverbio africano)
From | Date | Subject | |
---|---|---|---|
Next Message | Miguel Angel Mejía | 2005-08-12 17:51:46 | Primeros registros de una tabla |
Previous Message | Mario Gonzalez | 2005-08-12 17:42:26 | Re: Archivos php en un Servidor web, Base de Datos en otro. Ambos en Linux |