Tengo una tabla T1 con 60 filas y 5 columnas: ID1, ID2, info1, info2, info3.Acelere una consulta, unión interna simple con una tabla grande y una tabla pequeña
Tengo una tabla T2 con 1,2 millones de filas y otras 5 columnas: ID3, ID2, info4, info5, info6.
Quiero obtener (ID1, ID2, info4, info5, info6) de todas las filas donde coinciden los ID2. Actualmente mi consulta se ve así:
SELECT T1.ID1, T2.ID2,
T2.info4, T2.info5, T2.info6
FROM T1, T2
WHERE T1.ID2 = T2.ID2;
Esto tarda unos 15 segundos en ejecutarse. Mi pregunta es: ¿debería tomar tanto tiempo, y si no, cómo puedo acelerarlo? Me imagino que no debería, ya que T1 es muy pequeño.
Le pedí a PostgreSQL que EXPLICA la consulta, y dice que tiene hash T2, luego hash une ese hash con T1. Parece que hash T2 es lo que lleva tanto tiempo. ¿Hay alguna forma de escribir la consulta para que no tenga que modificar el hash T2? O bien, ¿hay alguna manera de tenerlo en la memoria caché del hash de T2 para que no vuelva a hacerlo? Las tablas solo se actualizarán cada pocos días.
Si hace la diferencia, T1 es una tabla temporal creada anteriormente en la sesión.
bueno ahora es increíblemente rápido =). – Claudiu
agregué índices al resto de la base de datos también, y ahora puedo agregarle nuevos elementos 50 veces/segundo en vez de ... una vez cada 2 segundos. ¡sweeet! – Claudiu
@PeterLang si pudiera escribir la consulta completa, entendiendo que esto sería mucho más fácil para los principiantes. – 3kstc