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);
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 |