I wrote:
> try writing
>       WHERE 'ABCDE' >= pr_min AND 'ABCDE' <= pr_max
>             AND pr_min < (SELECT pr_min FROM table
>                           WHERE pr_min > 'ABCDE'
>                           ORDER BY pr_min LIMIT 1)
> The idea here is to add an upper bound on pr_min to the index scan
> conditions, so that the scan can stop short of the end of the index.

Argh, got that backwards.  What you are missing is a *lower* bound on
pr_min, and the index scan will therefore run from the start of the
index up to pr_min = 'ABCDE'.  So reverse the sense of the added test:

              AND pr_min >= (SELECT pr_min FROM table
                             WHERE pr_min <= 'ABCDE'
                             ORDER BY pr_min DESC LIMIT 1)

                        regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
      joining column's datatypes do not match

Reply via email to