Hola Lista

Verificando lo expresado por Alvaro (cito):


"   Por ejemplo puedes incluir columnas adicionales en índices UNIQUE (en
las cuales no se verificará unicidad), o incluir columnas que no son
indexables. "


alter table test add column id serial;

vacuum full analyze test;

explain (ANALYZE,BUFFERS,TIMING)  select cantidad,mes from test where
id=345654

Gather  (cost=1000.00..27210.10 rows=1 width=8) (actual
time=176.955..181.588 rows=1 loops=1)
  Workers Planned: 2
  Workers Launched: 2
  Buffers: shared read=19460
  ->  Parallel Seq Scan on test  (cost=0.00..26210.00 rows=1 width=8)
(actual time=118.910..169.480 rows=0 loops=3)
        Filter: (id = 345654)
        Rows Removed by Filter: 1200000
        Buffers: shared read=19460
Planning Time: 1.593 ms
Execution Time: 181.616 ms


create unique    index concurrently idx_unique_test_id on test(id);

explain (ANALYZE,BUFFERS,TIMING)  select cantidad,mes from test where
id=345654;


Index Scan using idx_unique_test_id on test  (cost=0.09..2.29 rows=1
width=8) (actual time=0.042..0.042 rows=1 loops=1)
  Index Cond: (id = 345654)
  Buffers: shared read=4
Planning Time: 0.242 ms
Execution Time: 0.064 ms



create unique    index concurrently idx_unique_test_id2 on test(id) include
(mes,cantidad);

explain (ANALYZE,BUFFERS,TIMING)  select cantidad,mes from test where
id=345654

Index Only Scan using idx_unique_test_id2 on test  (cost=0.09..2.29 rows=1
width=8) (actual time=0.044..0.044 rows=1 loops=1)
  Index Cond: (id = 345654)
  Heap Fetches: 1
  Buffers: shared read=4
Planning Time: 0.221 ms
Execution Time: 0.058 ms


SELECT

 nspname,relname,pg_relation_size(c.oid),pg_size_pretty(pg_relation_size(c.oid))
as "size"
from pg_class c left join pg_namespace n on ( n.oid=c.relnamespace)
where nspname not in ('pg_catalog','information_schema') and relname ilike
'%test%'
order by pg_relation_size(c.oid) desc;

public;test;159416320;152 MB
*public;idx_unique_test_id2;113418240;108 MB*
public;idx_test_mes;80887808;77 MB
public;idx_test_mes2;80887808;77 MB
*public;idx_unique_test_id;80887808;77 MB*
public;test_id_seq;8192;8192 bytes

en efecto para el caso de unique se se aprecia su funcionamiento  (y la
diferencia de tamaño). Muchas Gracias!

El mar., 23 de jun. de 2020 a la(s) 11:07, Alvaro Herrera (
alvhe...@2ndquadrant.com) escribió:

> Hellmuth Vargas escribió:
> > Hola Diego
> >
> > Gracias por la respuesta, pero.. y qué ventaja tendria? pues lo mismo se
> > logra con un índice compuesto e incluso este último permitirá  filtrar
> > además por el otro campo, e incluso el optimizador prefirió el índice
> > compuesto.
>
> Por ejemplo puedes incluir columnas adicionales en índices UNIQUE (en
> las cuales no se verificará unicidad), o incluir columnas que no son
> indexables.
>
> --
> Álvaro Herrera                https://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
>


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