From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | Announce <truthhurts(at)insightbb(dot)com> |
Cc: | pgsql-performance(at)postgresql(dot)org |
Subject: | Re: int2 vs int4 in Postgres |
Date: | 2005-09-26 18:42:53 |
Message-ID: | 20050926184253.GA8295@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
On Mon, Sep 26, 2005 at 12:54:05PM -0500, Announce wrote:
> Is there an performance benefit to using int2 (instead of int4) in cases
> where i know i will be well within its numeric range? I want to conserve
> storage space and gain speed anywhere i can, but i know some apps simply end
> up casting 2byte data to 4byte (like Java int/short).
>
> These int2 values will be used in primary and foreign key fields and I know
> that i must explicitly use tick marks (ex: where int2_column = '12') in
> order to make use of indexes, but my question is IS IT WORTH IT? IS THERE
> ANY REAL GAIN FOR DOING THIS?
> An simple scenario would be:
>
> Songs
> -------
> song_id serial pkey
> genre int2 fkey
> title varchar
Not in this case, because the varchar column that follows the int2
column needs 4-byte alignment, so after the int2 column there must be 2
bytes of padding.
If you had two consecutive int2 fields you would save some the space.
Or int2/bool/bool (bool has 1-byte alignment), etc.
This assumes you are in a tipical x86 environment ... in other
environments the situation may be different.
--
Alvaro Herrera Valdivia, Chile ICBM: S 39º 49' 17.7", W 73º 14' 26.8"
Voy a acabar con todos los humanos / con los humanos yo acabaré
voy a acabar con todos / con todos los humanos acabaré (Bender)
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2005-09-26 19:17:23 | Re: Index use in BETWEEN statement... |
Previous Message | Announce | 2005-09-26 17:54:05 | int2 vs int4 in Postgres |