Обсуждение: 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