From: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
---|---|
To: | "Ivan Perales M(dot)" <ivan(dot)perales(at)gmail(dot)com> |
Cc: | Ayuda Esp PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Índices sobre constraints foreign key |
Date: | 2017-06-10 12:39:15 |
Message-ID: | 20170610123915.yp4ogufxm7ylrzxn@alvherre.pgsql |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Ivan Perales M. escribió:
> En algun momento del pasado, honestamente no recuerdo si leí o escuché que
> postgres por default creaba indices sobre las columnas que tienen un
> constraint foreign key.
Si leíste o escuchaste eso, la persona que habló o escribió estaba
tristemente equivocado.
> Nested Loop Left Join (cost=0.00..3.28 rows=1 width=8)
> Join Filter: (p.id = e.producto_id)
> -> Seq Scan on productomovimiento e (cost=0.00..1.00 rows=1 width=8)
> Filter: (producto_id = 10)
> -> Seq Scan on producto p (cost=0.00..2.26 rows=1 width=4)
> Filter: (id = 10)
>
> Estoy viendo que realiza un escaneo secuencial para filtrar los movimientos
> de cierto producto, yo esperaria que utilizara un indice.
La verdad es que la existencia de un índice no obliga a que se lo use,
dependiendo de la consulta y dependiendo de otros factores como el
tamaño de la tabla -- si la tabla es muy pequeña es más rápido
recorrerla secuencialmente. Pero si el índice no existe, obviamente no
hay alternativa.
Prueba \d en psql para verificar si el índice existe.
> Esto significa que efectivamente debo crear un indice manualmente en
> cada columna con el constraint foreign key?
... o índices multi-columna.
> si es así, por que el left join funciona muy rápido aun cuando se
> tengan algunos cientos de miles de filas?
Habría que ver el EXPLAIN ANALYZE. Según el fragmento de EXPLAIN que
pegaste, no hay miles de registros sino un puñado.
--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | Francisco Olarte | 2017-06-10 15:09:48 | Re: [pgsql-es-ayuda] Índices sobre constraints foreign key |
Previous Message | Ivan Perales M. | 2017-06-10 05:12:30 | Re: [pgsql-es-ayuda] Índices sobre constraints foreign key |