From: | Anthony Sotolongo <asotolongo(at)gmail(dot)com> |
---|---|
To: | Hellmuth Vargas <hivs77(at)gmail(dot)com> |
Cc: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Postgresql siempre prefiere indices btree sobre brin |
Date: | 2019-06-27 03:09:49 |
Message-ID: | CAASDfF3QzzxNFidWMwTrmu0G227+YQmwuRbVs3HkrgG_UOCnxw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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 <hivs77(at)gmail(dot)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 (
> 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
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Hellmuth Vargas | 2019-06-28 19:21:37 | Múltiples réplicas con hot_standby_feedback activo |
Previous Message | Hellmuth Vargas | 2019-06-27 02:05:09 | Re: Postgresql siempre prefiere indices btree sobre brin |