Thread: Indexing an array?

Indexing an array?

From
Silke Trissl
Date:
Hi,

I have a problem with arrays in Postgres. I want to create a really
large array, lets say 3 billion characters long.

As far I could read from the documentation - this should be possible.
But my question is, is there a kind of index on the array.

Lets say, I want to get element 2,675,345,328. Does Postgres have to
load the entire array into memory and then run through the 2.6 billion
characters to return the one I want or does Postgres have an index - as
where to find this element on disk?

Any advice is welcome and thanks in advance
Silke Trißl




Re: Indexing an array?

From
Josh Berkus
Date:
Silke,

> I have a problem with arrays in Postgres. I want to create a really
> large array, lets say 3 billion characters long.

Change your application design.  

-- 
Josh Berkus
Aglio Database Solutions
San Francisco


Re: Indexing an array?

From
"Dmitri Bichko"
Date:
Really seems like that array should be a separate table, then Postgres would definitely know how to index it.

Dmitri

> -----Original Message-----
> From: pgsql-sql-owner@postgresql.org
> [mailto:pgsql-sql-owner@postgresql.org] On Behalf Of Silke Trissl
> Sent: Thursday, September 08, 2005 12:14 PM
> To: pgsql-sql@postgresql.org
> Subject: [SQL] Indexing an array?
>
>
> Hi,
>
> I have a problem with arrays in Postgres. I want to create a
> really large array, lets say 3 billion characters long.
>
> As far I could read from the documentation - this should be
> possible. But my question is, is there a kind of index on the array.
>
> Lets say, I want to get element 2,675,345,328. Does Postgres
> have to load the entire array into memory and then run
> through the 2.6 billion characters to return the one I want
> or does Postgres have an index - as where to find this
> element on disk?
>
> Any advice is welcome and thanks in advance
>
>     Silke Trißl
>
>
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 6: explain analyze is your friend
>
The information transmitted is intended only for the person or entity to which it is addressed and may contain
confidentialand/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any
actionin reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you
receivedthis in error, please contact the sender and delete the material from any computer 


Re: Indexing an array?

From
Tom Lane
Date:
Silke Trissl <trissl@informatik.hu-berlin.de> writes:
> I have a problem with arrays in Postgres. I want to create a really
> large array, lets say 3 billion characters long.

Forget it --- quite aside from indexing inefficiencies, the max size of
an array (or any other single field) is just 1Gb.  Don't try to use
arrays to replace tables.
        regards, tom lane


Re: Indexing an array?

From
Ron Mayer
Date:
Silke Trissl wrote:
> As far I could read from the documentation - this should be possible.
> But my question is, is there a kind of index on the array.

If your needs are a bit more modest (say, a few thousands instead of 
billions) the stuff in contrib/intarray works well; and if you
needed types other than integers you can you can look at intarray
to see how to build indexes on them and what those indexes
are useful for.

> Lets say, I want to get element 2,675,345,328. Does Postgres have to
> load the entire array into memory and then run through the 2.6 billion
> characters to return the one I want or does Postgres have an index - as
> where to find this element on disk?

Wouldn't you rather expect an index to be useful for finding which
rows match your query rather than for finding content within a row?