Hola buenas tardes. 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. Ya que el rendimiento siempre ha sido óptimo y no he tenido problemas, realmente no me habia dado a la tarea de investigar al respecto.
Sin embargo acabo de leer un comentario que dice que ningun rdbms crea indices sobre éstas columnas por que lo que uno debe crearlos si es necesario. Ejecute un explain sobre una tabla que hace referencia a otra y ésto me arrojo en la salida: explain select e.id, p.id from productomovimiento as e left join producto p on p.id = e.producto_id where e.producto_id = 10; 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. Esto significa que efectivamente debo crear un indice manualmente en cada columna con el constraint foreign key? si es así, por que el left join funciona muy rápido aun cuando se tengan algunos cientos de miles de filas? Saludos y gracias por su tiempo. -- Lindolfo Iván Perales Mancinas Solo existen 10 tipos de personas en el mundo, las que saben binario y las que no.