Hola El mar., 7 de junio de 2022 2:08 p. m., Guillermo E. Villanueva < guillermo...@gmail.com> escribió:
> Muchas gracias por tu respuesta Alvaro, tal como suponias, despues de > hacer: > create index idx1 on product_(status); > create index idx2 on product_(qty); > set enable_seqscan to 0; > > No mejoró la performance. Demora lo mismo o un poquito mas. > De nuevo muchas gracias. > > Guillermo > offtopic: > Aprovecho para preguntar, ese "set" va a durar lo que dura la sesión? o es > un set para todo el servidor y queda hasta un reinicio? > El set ese va a durar lo que dure su sesión Saludos > > > > El mar, 7 jun 2022 a las 14:59, Alvaro Herrera (<alvhe...@alvh.no-ip.org>) > escribió: > >> Guillermo E. Villanueva escribió: >> >> > *product_.status = 1 and and product_.qty > 0* >> > >> > provocan seq. scan y el mayor costo y tiempo de mi consulta >> > la tabla product_ tiene 69300 filas >> > status = 1 son 49500 >> > qty > 0 son 65700 >> > >> > el explain me dice: >> > -> Parallel Seq Scan on product_ (cost=0.00..19483.64 rows=19580 >> > width=30) (actual time=0.032..39.454 rows=15674 loops=3) >> > Filter: ((qty > '0'::numeric) AND (status = 1)) >> > Rows Removed by Filter: 7454 >> > >> > Si creo índices individuales o combinando ambas columnas no mejora, >> sigue >> > haciendo seq. scan >> >> La tabla es muy pequeña y las cláusulas son poco selectivas, así que el >> seqscan ya es la mejor estrategia. Pero prueba haciendo "set >> enable_seqscan to 0" a ver si usando un índice anda más rápido (dudoso). >> Si la tabla fuera muy grande y la fracción de registros que tienen >> status=1 AND qty>0 es suficientemente pequeña, podría resultar en un >> plan distinto/mejor. >> >> -- >> Álvaro Herrera PostgreSQL Developer — >> https://www.EnterpriseDB.com/ >> "Oh, great altar of passive entertainment, bestow upon me thy discordant >> images >> at such speed as to render linear thought impossible" (Calvin a la TV) >> >