Dawid Kuroczko wrote:
smallint takes two bytes.  Numeric(1) will take around 10 bytes and char(1) will
take 5 bytes (4 bytes for length of data).

I never would've imagined *that* amount of overhead for CHAR(1)! I would've imagined that it would take up one byte (or two with a NULL indicator). After all, we're not talking about VARCHAR(1) [which is sort of useless]. Don't the catalogs know the declared length and if so, why the length overhead? I'm also surprised --albeit less-- about the NUMERIC(1) overhead. Is any of this discussed in the Internals chapters? I didn't see this discussed elsewhere.

As a perhaps-related aside, I've noticed several examples which declare string types as 'text', rather than VARCHAR or CHAR, the former being non-SQL standard. Is there some performance benefit to using 'text' (other than it being shorter to type :-) or is it just the "usual Postgres way"?

Joe


---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

              http://www.postgresql.org/docs/faq

Reply via email to