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

От
AlexK
Дата:
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?

От
Rob Sargent
Дата:
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?

От
Tom Lane
Дата:
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?

От
AlexK
Дата:
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.