My table is expected to have ~70-80 million rows; with columns:
Code:
 varchar(15), varchar(7), smallint, smallint, smallint[]
The last smallint array will contain a minimum of 250 entries; which I want to simply
Code:
select arrcol[someindex]
based on some condition.

Before going on with the whole thing I wanted to understand the difference between setting the smallint[] array as EXTERNAL versus leaving it as the default EXTENDED. Concerns: Storage space, Query time.
Does the size of the array affect Query time when I access an Nth element? Theoretically it shouldn't since each element of the array has a fixed size, but I still just wanted to be sure.


Another question, With this table structure:
Code:
 varchar(15), varchar(7), smallint, smallint, smallint[]
And 236 elements in the smallint[] array; one record is expected to take 15+7+2+2+472 Bytes (ignoring overhead). Over 2 million records, this comes out to be 950MB.
I created a sample table with 2 million records with random data, and it's taking 1116MB. That's approximately 88 Bytes of overhead per record! Is this normal? I read about a fixed 23-24B of overhead per row; but where's the rest of it coming from? Array overhead? Can I do something to reduce this?