Thread: Reverse Index ... how to ...

Reverse Index ... how to ...

From
"Marc G. Fournier"
Date:
I'm still searching through Google and whatnot, but not finding anything 
off the bat ... is there some way of creating a 'REVERSE INDEX' on a 
column in a table?

For instance, when I do a 'CLUSTER' to sort a table based on an INDEX, I'd 
like to sort it in reverse order, so would need the INDEX to go from 
'GREATEST to LOWEST', vs 'LOWEST to GREATEST' ...

Thx

----
Marc G. Fournier           Hub.Org Networking Services (http://www.hub.org)
Email: scrappy@hub.org           Yahoo!: yscrappy              ICQ: 7615664


Re: Reverse Index ... how to ...

From
Oleg Bartunov
Date:
On Wed, 5 Apr 2006, Marc G. Fournier wrote:

>
> I'm still searching through Google and whatnot, but not finding anything off 
> the bat ... is there some way of creating a 'REVERSE INDEX' on a column in a 
> table?
>
> For instance, when I do a 'CLUSTER' to sort a table based on an INDEX, I'd 
> like to sort it in reverse order, so would need the INDEX to go from 
> 'GREATEST to LOWEST', vs 'LOWEST to GREATEST' ...

use something like
select * into new_table from old_table order by some_key desc;

>
> Thx
>
> ----
> Marc G. Fournier           Hub.Org Networking Services (http://www.hub.org)
> Email: scrappy@hub.org           Yahoo!: yscrappy              ICQ: 7615664
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings
>
    Regards,        Oleg
_____________________________________________________________
Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru),
Sternberg Astronomical Institute, Moscow University, Russia
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(495)939-16-83, +007(495)939-23-83


Re: Reverse Index ... how to ...

From
Tom Lane
Date:
"Marc G. Fournier" <scrappy@postgresql.org> writes:
> I'm still searching through Google and whatnot, but not finding anything 
> off the bat ... is there some way of creating a 'REVERSE INDEX' on a 
> column in a table?

> For instance, when I do a 'CLUSTER' to sort a table based on an INDEX, I'd 
> like to sort it in reverse order, so would need the INDEX to go from 
> 'GREATEST to LOWEST', vs 'LOWEST to GREATEST' ...

You shouldn't need to worry about that during CLUSTER, as the system is
perfectly capable of scanning an index in either forward or backward
order at runtime.  For example,

regression=# explain select * from tenk1 order by unique1;                                    QUERY PLAN
------------------------------------------------------------------------------------Index Scan using tenk1_unique1 on
tenk1 (cost=0.00..1572.00 rows=10000 width=244)
 
(1 row)

regression=# explain select * from tenk1 order by unique1 desc;                                        QUERY PLAN
---------------------------------------------------------------------------------------------Index Scan Backward using
tenk1_unique1on tenk1  (cost=0.00..1572.00 rows=10000 width=244)
 
(1 row)

        regards, tom lane


Re: Reverse Index ... how to ...

From
"Marc G. Fournier"
Date:
On Wed, 5 Apr 2006, Tom Lane wrote:

> "Marc G. Fournier" <scrappy@postgresql.org> writes:
>> I'm still searching through Google and whatnot, but not finding anything
>> off the bat ... is there some way of creating a 'REVERSE INDEX' on a
>> column in a table?
>
>> For instance, when I do a 'CLUSTER' to sort a table based on an INDEX, I'd
>> like to sort it in reverse order, so would need the INDEX to go from
>> 'GREATEST to LOWEST', vs 'LOWEST to GREATEST' ...
>
> You shouldn't need to worry about that during CLUSTER, as the system is
> perfectly capable of scanning an index in either forward or backward
> order at runtime.  For example,
>
> regression=# explain select * from tenk1 order by unique1;
>                                     QUERY PLAN
> ------------------------------------------------------------------------------------
> Index Scan using tenk1_unique1 on tenk1  (cost=0.00..1572.00 rows=10000 width=244)
> (1 row)
>
> regression=# explain select * from tenk1 order by unique1 desc;
>                                         QUERY PLAN
> ---------------------------------------------------------------------------------------------
> Index Scan Backward using tenk1_unique1 on tenk1  (cost=0.00..1572.00 rows=10000 width=244)
> (1 row)

Perfect, that was what I was looking for, thx ...

----
Marc G. Fournier           Hub.Org Networking Services (http://www.hub.org)
Email: scrappy@hub.org           Yahoo!: yscrappy              ICQ: 7615664