Re: multi column index and order by

From: Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com>
To: Mage <mage(at)mage(dot)hu>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: multi column index and order by
Date: 2005-01-05 18:38:20
Message-ID: 20050105102402.Y74479@megazone.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


On Wed, 5 Jan 2005, Mage wrote:

> "order by a asc b desc"
>
> how can I create an index for this?

You need to create an operator class for reversed comparison of whatever
type b is and then use it on b in the index definition.

Something like (however, you should really use a C function for the
reverse comparison function rather than the sql one shown here):

create function btint4cmprev(integer, integer) returns integer as 'select
btint4cmp($2,$1);' language 'sql';

CREATE OPERATOR CLASS int4_desc_ops FOR TYPE int4 USING BTREE AS
OPERATOR 1 >, OPERATOR 2 >=, OPERATOR 3 =, OPERATOR 4 <=, OPERATOR 5 <,
FUNCTION 1 btint4cmprev(int4,int4);

which you could then use something like:
create index testindex on testtable(a, b int4_desc_ops);

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Bruno Wolff III 2005-01-05 18:43:59 Re: multi column index and order by
Previous Message Steven Klassen 2005-01-05 18:32:07 Re: warning: pg_query(): Query failed