From: | Jeff Janes <jeff(dot)janes(at)gmail(dot)com> |
---|---|
To: | Kristjan Mustkivi <sonicmonkey(at)gmail(dot)com> |
Cc: | Pgsql Performance <pgsql-performance(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Postgres chooses slow query plan from time to time |
Date: | 2021-09-13 19:21:39 |
Message-ID: | CAMkU=1x_9g7BZrPwpaVhwvVe7DKTR9gTgGLCtyVQq_m0iBGvRw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
On Mon, Sep 13, 2021 at 9:25 AM Kristjan Mustkivi <sonicmonkey(at)gmail(dot)com>
wrote:
> SELECT
> *
> FROM
> myschema.mytable pbh
> WHERE
> pbh.product_code = $1
> AND pbh.cage_player_id = $2
> AND pbh.cage_code = $3
> AND balance_type = $4
> AND pbh.modified_time < $5
> ORDER BY
> pbh.modified_time DESC FETCH FIRST 1 ROWS ONLY;
>
> "mytable_idx2" btree (cage_code, cage_player_id, modified_time)
>
Why does this index exist? It seems rather specialized, but what is it
specialized for?
If you are into specialized indexes, the ideal index for this query would
be:
btree (cage_code, cage_player_id, product_code, balance_type, modified_time)
But the first 4 columns can appear in any order if that helps you
combine indexes. If this index existed, then it wouldn't have to choose
between two other suboptimal indexes, and so would be unlikely to choose
incorrectly between them.
Cheers,
Jeff
From | Date | Subject | |
---|---|---|---|
Next Message | Jeff Janes | 2021-09-13 19:39:05 | Re: Postgres chooses slow query plan from time to time |
Previous Message | ldh@laurent-hasson.com | 2021-09-13 15:53:33 | RE: Big Performance drop of Exceptions in UDFs between V11.2 and 13.4 |