hi,
Consider adding id%10 as a new column?you will have one time burden but after 
creating index on it, update perf will satisfy.

Burcin 📱

> On 11 Aug 2023, at 07:49, David Rowley <dgrowle...@gmail.com> wrote:
> 
> On Thu, 10 Aug 2023 at 20:36, Dorian Hoxha <dorian.ho...@gmail.com> wrote:
>>> Do Not Use Partial Indexes as a Substitute for Partitioning
>>> While a search in this larger index might have to descend through a couple 
>>> more tree levels than a search in a smaller index, that's almost certainly 
>>> going to be cheaper than the planner effort needed to select the 
>>> appropriate one of the partial indexes. The core of the problem is that the 
>>> system does not understand the relationship among the partial indexes, and 
>>> will laboriously test each one to see if it's applicable to the current 
>>> query.
>> 
>> Would this be true in my case too?
> 
> Yes.  The process of determining which partial indexes are valid for
> the given query must consider each index one at a time and validate
> the index's WHERE clause against the query's WHERE clause to see if it
> can be used.  There is no shortcut that sees you have a series of
> partial indexes with WHERE id % 10 = N; which just picks 1 index
> without searching all of them.
> 
>> Is it faster for the planner to select a correct partition(hash partitioning 
>> on `id` column) instead of a correct partial index like in my case? I don't 
>> think I'll need more than ~32 partitions/partial-indexes in an extreme 
>> scenario.
> 
> I mean, test it and find out, but probably, yes, the partition pruning
> code for hash partitioning is an O(1) operation and is very fast.
> Once the given Constants have been hashed, finding the partition is
> just a single divide operation away.
> 
> David
> 
> 


Reply via email to