Thread: Is there an upper limit on the size of an array if it is indexed?

Is there an upper limit on the size of an array if it is indexed?

From
AlexK
Date:
I have created a unique index on an array of integers, and it works for a
small test case:

create table i(id int not null primary key,
v int[] not null unique );

insert into i(id, v) values(1, ARRAY[1,2]);

-- fails
insert into i(id, v) values(2, ARRAY[1,2]);
-- succeeds
insert into i(id, v) values(2, ARRAY[2,1]);

Is there an upper limit on the size of an array being indexed? I am
currently considering arrays of 2K-3K integers.




--
View this message in context:
http://postgresql.1045698.n5.nabble.com/Is-there-an-upper-limit-on-the-size-of-an-array-if-it-is-indexed-tp5793380.html
Sent from the PostgreSQL - sql mailing list archive at Nabble.com.



Re: Is there an upper limit on the size of an array if it is indexed?

From
Rob Sargent
Date:
On 02/24/2014 01:30 PM, AlexK wrote:
> I have created a unique index on an array of integers, and it works for a
> small test case:
>
> create table i(id int not null primary key,
> v int[] not null unique );
>
> insert into i(id, v) values(1, ARRAY[1,2]);
>
> -- fails
> insert into i(id, v) values(2, ARRAY[1,2]);
> -- succeeds
> insert into i(id, v) values(2, ARRAY[2,1]);
>
> Is there an upper limit on the size of an array being indexed? I am
> currently considering arrays of 2K-3K integers.
>
>
>
What are the odds?  Might be worth the risk.

rjs




Re: Is there an upper limit on the size of an array if it is indexed?

From
Tom Lane
Date:
AlexK <alkuzo@gmail.com> writes:
> I have created a unique index on an array of integers, and it works for a
> small test case:

> create table i(id int not null primary key,
> v int[] not null unique );

> insert into i(id, v) values(1, ARRAY[1,2]);

> -- fails
> insert into i(id, v) values(2, ARRAY[1,2]);
> -- succeeds
> insert into i(id, v) values(2, ARRAY[2,1]);

> Is there an upper limit on the size of an array being indexed? I am
> currently considering arrays of 2K-3K integers.

PG btrees have an item size limit of a couple of KB, so I don't think
this is going to work well for you.

Some people have gotten around that by using a unique index on a hash
value.  If you use something like MD5, the odds of a false collision
are probably low enough to tolerate.
        regards, tom lane



Re: Is there an upper limit on the size of an array if it is indexed?

From
AlexK
Date:
Tom, is this limitation documented anywhere?



--
View this message in context:
http://postgresql.1045698.n5.nabble.com/Is-there-an-upper-limit-on-the-size-of-an-array-if-it-is-indexed-tp5793380p5793387.html
Sent from the PostgreSQL - sql mailing list archive at Nabble.com.