Thread: Partial indexes
In 8.1.2. Table contains columns: keyp1 not null, keyp2 not null, keyp3 nullable. The queries will be separated into two kinds: one on those rows where keyp3 is null and the second on where keyp3 is not null. I think I want to: create unique index pk on table tbl (keyp1, keyp2); create unique index range on table tbl (keyp1, keyp2, keyp3) where keyp3 is not null; Are these indexes redundant given uniqueness requirement and the type of queries that will be run against the table? I don't think a non-unique index over all three columns be adequate given the uniqueness constraints. Opinions? Thanks, elein elein@varlena.com
elein <elein@varlena.com> writes: > I think I want to: > create unique index pk on table tbl (keyp1, keyp2); > create unique index range on table tbl (keyp1, keyp2, keyp3) where keyp3 is not null; > Are these indexes redundant given uniqueness requirement and the type of queries > that will be run against the table? If all (keyp1, keyp2) pairs are distinct then I see no particular use in the second index; it doesn't check anything that's not implied by the first index, and it doesn't offer any extra search selectivity either. regards, tom lane
Tom Lane wrote: > elein <elein@varlena.com> writes: >> I think I want to: >> create unique index pk on table tbl (keyp1, keyp2); don't you want create unique inde pk on table tbl (keyp1, keyp2) where keyp3 is null here? >> create unique index range on table tbl (keyp1, keyp2, keyp3) where keyp3 is not null; > >> Are these indexes redundant given uniqueness requirement and the type of queries >> that will be run against the table? greetings, Florian Pflug
On Wed, Apr 19, 2006 at 03:51:27AM +0200, Florian G. Pflug wrote: > Tom Lane wrote: > >elein <elein@varlena.com> writes: > >>I think I want to: > >> create unique index pk on table tbl (keyp1, keyp2); > don't you want > create unique inde pk on table tbl (keyp1, keyp2) where keyp3 is null > here? > > >> create unique index range on table tbl (keyp1, keyp2, keyp3) where > >> keyp3 is not null; > > > >>Are these indexes redundant given uniqueness requirement and the type of > >>queries > >>that will be run against the table? > > greetings, Florian Pflug > Yes, you are right. I ended up creating a unique constraint on the three parts of the key and a unique index on keyp1, keyp2 where keyp3 is null. I think this will cover all cases as simply as possible. Thanks, --elein elein@varlena.com