Re: Index filter instead of index condition w/ IN / ANY queries above certain set size

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Danny Shemesh <dany74q(at)gmail(dot)com>
Cc: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>, pgsql-general(at)postgresql(dot)org
Subject: Re: Index filter instead of index condition w/ IN / ANY queries above certain set size
Date: 2022-11-23 14:29:19
Message-ID: 3695029.1669213759@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Danny Shemesh <dany74q(at)gmail(dot)com> writes:
> -> Index Only Scan using
> idx_hashes on refs (cost=0.56..722735.47 rows=33715 width=16) (actual
> time=1727.208..1727.208 rows=1 loops=1)
> Index Cond: (tid =
> '13371337-1337-1337-1337-133713371337'::uuid)
> * Filter: (tidh = ANY
> ('{13391339-1339-1339-1339-133913391339}'::uuid[])) <<<<<<<<<<<<<<<-
> Note this line* Rows Removed
> by Filter: 109087
> Heap Fetches: 16976
> Buffers: shared hit=13051
> read=14561
> I/O Timings: read=53405.294

This doesn't match up terribly well with the table definition
you showed before, but I wonder whether tidh is a low-order
index column. If you need to optimize this specific shape
of query you need to pay attention to the index column order, per

https://www.postgresql.org/docs/current/indexes-multicolumn.html

That is, tid and tidh need to be the first two index columns.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Ted Toth 2022-11-23 15:31:27 table inheritance partition and indexes
Previous Message Laurenz Albe 2022-11-23 14:25:24 Re: Getting PSQL in Windows to support TAB/Autocomplete via modified readline...