Thread: Null integer columns

Null integer columns

From
Jeffrey Tenny
Date:
I have an integer column that is not needed for some rows in the table
(whether it is necessary is a factor of other row attributes, and it
isn't worth putting in a separate table).

What are the performance tradeoffs (storage space, query speed) of using
a NULL enabled column versus a NOT-NULL column with a sentinel integer
value?

Not that it matters, but in the event where the column values matter,
the numberic value is a foreign key.  Advice on that welcome too.

Thanks!


Re: Null integer columns

From
Tom Lane
Date:
Jeffrey Tenny <jeffrey.tenny@comcast.net> writes:
> What are the performance tradeoffs (storage space, query speed) of using
> a NULL enabled column versus a NOT-NULL column with a sentinel integer
> value?
> Not that it matters, but in the event where the column values matter,
> the numberic value is a foreign key.  Advice on that welcome too.

In that case you want to use NULL, because the foreign key mechanism
will understand that there's no reference implied.  With a sentinel
value you'd have to have a dummy row in the master table --- which will
cause you enough semantic headaches that you don't want to go there.

The performance difference could go either way depending on a lot of
other details, but it will be insignificant in any case.  Don't screw up
your database semantics for it.

            regards, tom lane