X-Original-To: pgsql-performance-postgresql.org@localhost.postgresql.org Received: from localhost (av.hub.org [200.46.204.144]) by postgresql.org (Postfix) with ESMTP id 1498811F681A for ; Fri, 31 Mar 2006 11:55:57 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 44620-01 for ; Fri, 31 Mar 2006 11:55:56 -0400 (AST) X-Greylist: from auto-whitelisted by SQLgrey- Received: from noel.decibel.org (noel.decibel.org [67.100.216.10]) by postgresql.org (Postfix) with ESMTP id 977FC11F6825 for ; Fri, 31 Mar 2006 11:55:54 -0400 (AST) Received: by noel.decibel.org (Postfix, from userid 1001) id 438F356423; Fri, 31 Mar 2006 09:55:55 -0600 (CST) Received: (hashcash-sendmail, from uid 1001); Fri, 31 Mar 2006 09:55:54 -0600 Date: Fri, 31 Mar 2006 09:55:54 -0600 From: "Jim C. Nasby" To: Theo Kramer Cc: pgsql-performance@postgresql.org Subject: Re: Indexes with descending date columns Message-ID: <20060331155554.GO49405@pervasive.com> References: <200603170625.k2H6PJ926955@pillette.com> <1143112188.2810.27.camel@theo-laptop.int.coza.net.za> <20060324102138.GR90527@pervasive.com> <1143629550.2985.29.camel@theo-laptop.int.coza.net.za> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1143629550.2985.29.camel@theo-laptop.int.coza.net.za> X-Operating-System: FreeBSD 6.0-RELEASE-p4 amd64 X-Distributed: Join the Effort! http://www.distributed.net User-Agent: Mutt/1.5.11 X-Hashcash: 1:20:060331:theo@flame.co.za::Vt5jOoM2ekbygTBr:01VOW X-Hashcash: 1:20:060331:pgsql-performance@postgresql.org::0DkLEtWTFYDysDfR:00000 0000000000000000000000005VG0 X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, score=0.108 required=5 tests=[AWL=0.108] X-Spam-Score: 0.108 X-Spam-Level: X-Archive-Number: 200603/639 X-Sequence-Number: 18076 On Wed, Mar 29, 2006 at 12:52:31PM +0200, Theo Kramer wrote: > On Fri, 2006-03-24 at 12:21, Jim C. Nasby wrote: > > On Thu, Mar 23, 2006 at 01:09:49PM +0200, Theo Kramer wrote: > > > ii If no to i, is it feasible to extend PostgreSQL to allow traversing > > > an index in column descending and column ascending order - assuming > > > an order by on more than one column with column order not > > > in the same direction and indexes existing? ... if that makes sense. > > > > Yes. > > > > stats=# explain select * from email_contrib order by project_id desc, id desc, date desc limit 10; > > QUERY PLAN > > ------------------------------------------------------------------------------------------------------------------------ > > Limit (cost=0.00..31.76 rows=10 width=24) > > -> Index Scan Backward using email_contrib_pkey on email_contrib (cost=0.00..427716532.18 rows=134656656 width=24) > > (2 rows) > > Not quite what I mean - redo the above as follows and then see what > explain returns > > explain select * from email_contrib order by project_id, id, date desc > limit 10; Ahh. There's a hack to do that by defining a new opclass that reverses < and >, and then doing ORDER BY project_id, id, date USING new_opclass. I think there's a TODO about this, but I'm not sure... -- Jim C. Nasby, Sr. Engineering Consultant jnasby@pervasive.com Pervasive Software http://pervasive.com work: 512-231-6117 vcard: http://jim.nasby.net/pervasive.vcf cell: 512-569-9461