Re: Postgresql siempre prefiere indices btree sobre brin

From: Hellmuth Vargas <hivs77(at)gmail(dot)com>
To: Anthony Sotolongo <asotolongo(at)gmail(dot)com>
Cc: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Postgresql siempre prefiere indices btree sobre brin
Date: 2019-06-27 02:05:09
Message-ID: CAN3Qy4pSpHhCfPoLPuOnDRHchc-xjFWDrEpiUx=pMZZxR3k1kQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola

Muchas gracias por la oportuna respuesta, quiere decir que cuando el
intervalo o rango del filtro sea amplio y/o la cantidad de registros que
cumplan la condición sea mayor que el 20% de los registros es preferido el
BRIN, osea esta mas enforcado en traer volumen... se podría deducir...

El mié., 26 de jun. de 2019 a la(s) 16:25, Anthony Sotolongo (
asotolongo(at)gmail(dot)com) escribió:

> Hola Hellmuth, corroborando lo que comenta Alvaro sobre la consulta, un
> ejemplo:
>
>
> create table prueba (i int, fecha timestamp );
>
> insert into prueba
> select (random()*10000000)::int, fec from generate_series
> ('2007-02-01'::timestamp
> , '2008-04-01'::timestamp
> , '1 min'::interval) as fec;
>
>
>
> create index idx_btree on prueba (fecha);
> create index idx_brin on prueba using brin (fecha);
> ANALYZE prueba ;
>
> EXPLAIN ANALYZE
> select * from prueba where fecha ='2007-02-01 00:02:00' ;
>
> --selecciona el btree
>
> "Index Scan using idx_btree on prueba (cost=0.43..11.43 rows=2
> width=12) (actual time=0.036..0.044 rows=2 loops=1)"
> " Index Cond: (fecha = '2007-02-01 00:02:00'::timestamp without time
> zone)"
> "Planning time: 0.224 ms"
> "Execution time: 0.115 ms"
>
>
> EXPLAIN ANALYZE
> select * from prueba where fecha >'2007-02-01 00:02:00' and
> fecha <'2007-08-10 00:02:00';
>
> --selecciona el brin
>
> "Bitmap Heap Scan on prueba (cost=151.06..23475.16 rows=550176
> width=12) (actual time=0.210..68.213 rows=547198 loops=1)"
> " Recheck Cond: ((fecha > '2007-02-01 00:02:00'::timestamp without time
> zone) AND (fecha < '2007-08-10 00:02:00'::timestamp without time zone))"
> " Rows Removed by Index Recheck: 44802"
> " Heap Blocks: lossy=3200"
> " -> Bitmap Index Scan on idx_brin (cost=0.00..13.51 rows=1113807
> width=0) (actual time=0.185..0.185 rows=32000 loops=1)"
> " Index Cond: ((fecha > '2007-02-01 00:02:00'::timestamp without
> time zone) AND (fecha < '2007-08-10 00:02:00'::timestamp without time
> zone))"
> "Planning time: 0.222 ms"
> "Execution time: 85.913 ms"
>
>
> Saludos
>
>
>
> El 26-06-19 a las 17:07, Alvaro Herrera escribió:
> > Hellmuth Vargas escribió:
> >> Hola lista
> >>
> >> Si sobre una columna de una tabla están definidos tanto un índice btree
> >> como un brin el optimizador siempre va a preferir el btree sobre el
> brin?
> > Depende de la consulta, pero en general sí.
> >
>

--
Cordialmente,

Ing. Hellmuth I. Vargas S.
Esp. Telemática y Negocios por Internet
Oracle Database 10g Administrator Certified Associate
EnterpriseDB Certified PostgreSQL 9.3 Associate

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Anthony Sotolongo 2019-06-27 03:09:49 Re: Postgresql siempre prefiere indices btree sobre brin
Previous Message Anthony Sotolongo 2019-06-26 21:25:39 Re: Postgresql siempre prefiere indices btree sobre brin