Indexes parciales

From: "Carlos T(dot) Groero Carmona" <ctonetg(at)gmail(dot)com>
To: Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Indexes parciales
Date: 2019-09-02 19:24:35
Message-ID: CABh6Tc0rcck1vnKtmL7W=qMhmmPm_DQs9NTtE2hiXUm1sDQk4w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola lista,

Estaba revisando una consulta que esta tomando mucho tiempo 304ms y al
revisar el explain no utiliza ninguno de los indexes que existen.

La consulta es esta:

Select mobile_users.* from mobile_users where org_id = 1;

Si bien es cierto que ninguno de los indexes que existen para esa tabla
tiene solo la columna org_id, todos los indexes son compuestos es decir
utilizan multiples columnas donde en casi todos se incluye org_id.

Hay uno que tiene dos columnas org_id y la fecha en que se creo el usuario,
sin enbargo postgres nunca utiliza ese index parcialmente, prefiere
utilizar el scaneo sequencial.

En este caso, el 99.98% de la information pertenece a org_id =1 pero 304ms
es demasiado lento para servidor con 64CPU y 512GB de RAM y solo 356mil
rows.

En fin despues de comentarles el entornondonde se ejecuto esa consulta, me
pregunto: si postgre decidiera utilizar un index en vez de scaneo
sequencial, podria utilizar el index que le comente donde se indexa por
org_id y la fecha en que se creo la columna, aunque solo se pase el org_id
en la consulta?

Este es el resultado del explain analyze:
Seq Scan on mobile_users (cost=0.00..38533.34 rows=356403 width=9015)
(actual time=0.022..292.568 rows=356409 loops=1)
Filter: (org_id = 1)
Rows Removed by Filter: 18
Planning time: 2.292 ms
Execution time: 304.003 ms

Gracias de antemano por sus comentarios.
Carlos

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Olivier Gautherot 2019-09-02 19:47:44 Re: Indexes parciales
Previous Message Hellmuth Vargas 2019-08-30 09:21:33 Re: ¿Se puede visualizar o editar un fichero wal?