Multicolumn order by - Mailing list pgsql-performance

From Theo Kramer
Subject Multicolumn order by
Date
Msg-id 1145398075.3048.18.camel@josh
Whole thread Raw
Responses Re: Multicolumn order by
Re: Multicolumn order by
List pgsql-performance
Hi

Apologies if this has already been raised...

PostgreSQL 8.1.3 and prior versions. Vacuum done.

Assuming a single table with columns named c1 to cn and a requirement to
select from a particular position in multiple column order.

The column values in my simple example below denoted by 'cnv' a typical
query would look as follows

select * from mytable where
  (c1 = 'c1v' and c2 = 'c2v' and c3 >= 'c3v') or
  (c1 = 'c1v' and c2 > 'c2v') or
  (c1 > 'c1v')
  order by c1, c2, c3;

In real life with the table containing many rows (>9 Million) and
a single multicolumn index on the required columns existing I get the
following

explain analyse
 SELECT
 tran_subledger,
 tran_subaccount,
 tran_mtch,
 tran_self,
 tran_Rflg FROM tran
WHERE ((tran_subledger = 2 AND tran_subaccount = 'ARM                 '
AND tran_mtch = 0 AND tran_self >= 0 )
OR (tran_subledger = 2 AND tran_subaccount = 'ARM                 ' AND
tran_mtch > 0 )
OR (tran_subledger = 2 AND tran_subaccount > 'ARM                 ' )
OR (tran_subledger > 2 ))
ORDER BY tran_subledger,
 tran_subaccount,
 tran_mtch,
 tran_self
limit 10;

 Limit  (cost=0.00..25.21 rows=10 width=36) (actual
time=2390271.832..2390290.305 rows=10 loops=1)
   ->  Index Scan using tran_mtc_idx on tran  (cost=0.00..13777295.04
rows=5465198 width=36) (actual time=2390271.823..2390290.252 rows=10
loops=1)
         Filter: (((tran_subledger = 2) AND (tran_subaccount = 'ARM
'::bpchar) AND (tran_mtch = 0) AND (tran_self >= 0)) OR ((tran_subledger
= 2) AND (tran_subaccount = 'ARM                 '::bpchar) AND
(tran_mtch > 0)) OR ((tran_subledger = 2) AND (tran_subaccount >
'ARM                 '::bpchar)) OR (tran_subledger > 2))
 Total runtime: 2390290.417 ms

Any suggestions/comments/ideas appreciated.
--
Regards
Theo


pgsql-performance by date:

Previous
From: "Jim C. Nasby"
Date:
Subject: Re: creating of temporary table takes very long
Next
From: Tom Lane
Date:
Subject: Re: creating of temporary table takes very long