Hola nuevamente, desconozco los % exactamente pero te dejo algunos enlaces
que me ayudaron en su momento a comprender un poco mas los BRIN, y puede
que te ayude a ti también  a conocer a los índices BRIN y determinar si te
ajustan a tu escenario y tal vez comprender el motivo del optimizador de
escoger uno u otro.

https://www.postgresql.org/docs/10/brin-intro.html

https://en.m.wikipedia.org/wiki/Block_Range_Index

https://info.crunchydata.com/blog/postgresql-brin-indexes-big-data-performance-with-minimal-storage


https://m.habr.com/en/company/postgrespro/blog/452900/

https://www.postgresql.fastware.com/blog/brin-indexes-what-are-they-and-how-do-you-use-them


Saludos

El mié., 26 de jun. de 2019 10:05 p. m., Hellmuth Vargas <hiv...@gmail.com>
escribió:

> 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 (
> asotolo...@gmail.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
>
>

Reply via email to