Re: How number of columns affects performance - Mailing list pgsql-performance

From Josh Berkus
Subject Re: How number of columns affects performance
Date
Msg-id 200308011044.03493.josh@agliodbs.com
Whole thread Raw
In response to Re: How number of columns affects performance  (Francisco J Reyes <fran@natserv.net>)
Responses Re: How number of columns affects performance
Re: How number of columns affects performance
List pgsql-performance
Francisco,

> Yes all fields belong to the same entity. I used 100 as an example it may
> be something like 60 to 80 fields (there are two tables in question). I
> don't formally do 3rd normal form, but for the most part I do most of
> the general concepts of normalization.
>
> > If not, then good design says to split the table.

Actually, no, it doesn't.   If all 60-80 fields are unitary and required
characteristics of the row-entity, normalization says keep them in one table.

The only time NF would recommend splitting the table is for fields which are
frequenly NULL for reasons other than missing data entry.  For those, you'd
create a child table.  Although while this is good 4NF, it's impractical in
PostgreSQL, where queries with several LEFT OUTER JOINs tend to be very slow
indeed.

My attitude toward these normalization vs. performance issues is consistenly
the same:  First, verify that you have a problem.   That is, build the
database with everything in one table (or with child tables for Nullable
fields, as above) and try to run your application.  If performance is
appalling, *then* take denormalization steps to improve it.

I'm frequently distressed by the number of developers who make questionable
design decisions "for performance reasons" without every verifying that they
were, in fact, improving performance ...

--
Josh Berkus
Aglio Database Solutions
San Francisco

pgsql-performance by date:

Previous
From: Ron Johnson
Date:
Subject: Re: How number of columns affects performance
Next
From: Jenny Zhang
Date:
Subject: OSDL Database Test Suite 3 is available on PostgreSQL