1- and 2-dimensional indexes on same column: why is the 2d one preferred?

From: Marinos Yannikos <mjy(at)geizhals(dot)at>
To: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: 1- and 2-dimensional indexes on same column: why is the 2d one preferred?
Date: 2009-03-23 21:22:21
Message-ID: 49C7FD8D.6050905@geizhals.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Recent versions of PostgreSQL seem to prefer 2d indexes somehow:

for a table "foo" with
"i_a" btree (a)
"i_ab" btree (a, b)

SELECT * FROM foo WHERE a=123
will often use "i_ab" and not "i_a" (even right after ANALYZE). This
raises some questions:

- is there even any benefit in still having both these indexes? (can
some operations still use "i_a" only or is "i_ab" always a sufficient
replacement for "i_a"?)

- is this even working as intended? in my experience (can't back it up
with numbers atm.), 2-dimensional indexes are often slower and they
degrade noticeably over time. Without knowing the implementation, I'd
assume that using "i_ab" would usually require more page fetches than
using "i_a" for the above query.

Regards,
Marinos

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Harvey, Allan AC 2009-03-23 22:06:30 Re: LISTEN/NOTIFY problem
Previous Message RebeccaJ 2009-03-23 21:11:28 Re: text column constraint, newbie question