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
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 |