| From: | Jairo Graterón <jgrateron(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: plan de ejecución |
| Date: | 2025-02-04 22:49:37 |
| Message-ID: | CALnU-rOS2tcBSGcaqLkPWkKHSfT6Rp5U1S3nyczzYcRYSni2-g@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-es-ayuda |
Saludos
id es de tipo int o bigint?
Prueba con esta otra forma de hacer el IN y nos comentas.
"companies"."id" = ANY (ARRAY[1381059542, 1380939758, 1380939757,
1380939753]::integer)
si es tipo bigint
"companies"."id" = ANY (ARRAY[1381059542, 1380939758, 1380939757,
1380939753]::bigint[])
El mar, 4 feb 2025 a las 12:43, Guillermo E. Villanueva (<
guillermovil(at)gmail(dot)com>) escribió:
> Postgresql 13
> En una query como esta:
>
> explain select
>
> *
>
> from
>
> "companies"
>
> inner join "subclients" on "subclients"."id" = "companies"."subclient_id"
>
> inner join "temas" on "temas"."id" = "companies"."main_tema_id"
>
> left join "domains" on "domains"."id" = "companies"."domain_id"
>
> left join "papers" on "papers"."id" = "domains"."paper_id"
>
> left join "tematicas" on "tematicas"."id" = "domains"."tematica_id"
>
> left join "special_values" on "special_values"."subclient_id" =
> "companies"."subclient_id"
>
> where
>
> "companies"."id" in (1381059542, 1380939758, 1380939757, 1380939753)
>
> and "companies"."subclient_id" in (13579, 13580)
>
> and companies.fulldate >= '2025-01-31 09:30' and companies.fulldate < '2025-02-04
> 09:30'
>
> and "companies"."hidden_by_contact" is null
>
> and (
>
> (subclients.show_3300 is not true and companies.ep_file !~ '_print3300')
>
> or subclients.show_3300 is true
>
> )
>
> and "domains"."p_or_d" in ('p', 'd', 'b')
>
> Tengo este plan de ejecución:
> Nested Loop Left Join (cost=6.70..54.38 rows=1 width=5276)
> -> Nested Loop Left Join (cost=2.28..45.94 rows=1 width=2707)
> -> Nested Loop Left Join (cost=2.13..41.74 rows=1 width=2688)
> -> Nested Loop (cost=1.71..33.80 rows=1 width=2655)
> -> Nested Loop (cost=1.28..25.36 rows=1 width=1781)
> -> Nested Loop (cost=0.86..16.92 rows=1
> width=1673)
> -> Index Scan using
> companies_fulldate_subclient_id_idx on companies (cost=0.57..8.60 rows=1
> width=1113)
> Index Cond: ((fulldate >=
> '2025-01-31 09:30:00'::timestamp without time zone) AND (fulldate <
> '2025-02-04 09:30:00'::timestamp without time zone))
> Filter: ((hidden_by_contact IS
> NULL) AND (subclient_id = ANY ('{13579,13580}'::integer[])) AND (id = ANY
> ('{1381059542,1380939758,1380939757,1380939753}'::integer[])))
> -> Index Scan using subclients2_pkey on
> subclients (cost=0.29..8.31 rows=1 width=560)
> Index Cond: (id =
> companies.subclient_id)
> Filter: (((show_3300 IS NOT TRUE)
> AND ((companies.ep_file)::text !~ '_print3300'::text)) OR (show_3300 IS
> TRUE))
> -> Index Scan using temas_pkey on temas
> (cost=0.42..8.44 rows=1 width=108)
> Index Cond: (id = companies.main_tema_id)
> -> Index Scan using domains_pkey on domains
> (cost=0.42..8.44 rows=1 width=874)
> Index Cond: (id = companies.domain_id)
> Filter: ((p_or_d)::text = ANY
> ('{p,d,b}'::text[]))
> -> Index Scan using papers_pkey on papers (cost=0.42..7.93
> rows=1 width=33)
> Index Cond: (id = domains.paper_id)
> -> Index Scan using tematicas_pkey on tematicas (cost=0.14..4.16
> rows=1 width=19)
> Index Cond: (id = domains.tematica_id)
> -> Bitmap Heap Scan on special_values (cost=4.42..8.43 rows=1
> width=2569)
> Recheck Cond: (subclient_id = companies.subclient_id)
> -> Bitmap Index Scan on special_values_subclient_id_idx
> (cost=0.00..4.42 rows=1 width=0)
> Index Cond: (subclient_id = companies.subclient_id)
>
> ya hice un ANALYZE.
> La tabla companies tiene millones de filas.
> La clave primaria de companies es "id"
> No entiendo porque postgres no utiliza primero que nada ese índice para
> reducir las filas de resultado, existe forma de forzar a que lo use? o es
> correcto que no lo use?
>
>
> Desde ya muchas gracias por los comentarios.
>
> Saludos.
>
> Guillermo
>
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Horacio Miranda | 2025-02-05 01:33:52 | Re: plan de ejecución |
| Previous Message | Guillermo E. Villanueva | 2025-02-04 16:42:48 | plan de ejecución |