Re: Optimización de consulta

From: Daymel Bonne Solís <daymelbonne(at)gmail(dot)com>
To: "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Optimización de consulta
Date: 2022-06-07 17:58:20
Message-ID: CADGXAPhU9fTBN0gE2oiO-YYg-YXufRnK5jjv+89sNs5cPwTG1g@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El mar, 7 jun 2022 a la(s) 12:21, Guillermo E. Villanueva (
guillermovil(at)gmail(dot)com) escribió:

> Buenas tardes cómo andan? quizá me puedan dar una mano, estoy tratando de
> optimizar una consulta con varios joins, agrupamientos y unos cuantos
> filtros, según lo que puedo ver en el explain las expresiones:
>
> *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
>
> Creen que hay alguna forma de mejorarlo? o ya estoy en la mejor versión de
> la query?
>
> Desde ya muchas gracias por las ideas.
>

La explicación del comportamiento viene dado por los datos que nos muestras:

Total de registros: 69300
Tuplas que cumplen con `status = 1` son 49500 representa el 71%
Tuplas que cumplen con `qty > 0` son 49500 que son 84%

Postgres no utilizará índices, es ménos costoso hacer un scan secuencial
sobre la tabla que primero buscar en los índices y luego ir a la tabla para
obtener los registros.

Saludos

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2022-06-07 17:59:10 Re: Optimización de consulta
Previous Message Guillermo E. Villanueva 2022-06-07 17:17:14 Optimización de consulta