Thread: Re: Best way to "add" columns

Re: Best way to "add" columns

From
Martijn van Oosterhout
Date:
Marten Feldtmann wrote:
>
>  The varable lengths columns should be at the end of the row, therefore
>  it does not seem to be good to add an integer column after a varchar
>  column.

1. Is this true? Should variable length column really be at the end
of a row?

2. If so, surly postgres can reorder tham internally so that on disk
they are in the optimal format.
--
Martijn van Oosterhout <kleptog@cupid.suninternet.com>
http://cupid.suninternet.com/~kleptog/

Re: Best way to "add" columns

From
Tom Lane
Date:
Martijn van Oosterhout <kleptog@cupid.suninternet.com> writes:
> Marten Feldtmann wrote:
>> The varable lengths columns should be at the end of the row, therefore
>> it does not seem to be good to add an integer column after a varchar
>> column.

> 1. Is this true? Should variable length column really be at the end
> of a row?

There is some microscopic performance advantage if you put fixed-width
columns before variable-width columns: columns that are at a fixed
offset in the table records don't require scanning through earlier
columns to access. But I'd be surprised if you could actually measure
any difference, unless perhaps on tables with hundreds of columns.

> 2. If so, surly postgres can reorder tham internally so that on disk
> they are in the optimal format.

There are notes in the source code indicating that the original
Berkeley Postgres crew thought about this and decided it wasn't
worth the trouble.

            regards, tom lane

Re: Best way to "add" columns

From
Bruce Momjian
Date:
> Martijn van Oosterhout <kleptog@cupid.suninternet.com> writes:
> > Marten Feldtmann wrote:
> >> The varable lengths columns should be at the end of the row, therefore
> >> it does not seem to be good to add an integer column after a varchar
> >> column.
>
> > 1. Is this true? Should variable length column really be at the end
> > of a row?
>
> There is some microscopic performance advantage if you put fixed-width
> columns before variable-width columns: columns that are at a fixed
> offset in the table records don't require scanning through earlier
> columns to access. But I'd be surprised if you could actually measure
> any difference, unless perhaps on tables with hundreds of columns.
>
> > 2. If so, surly postgres can reorder tham internally so that on disk
> > they are in the optimal format.
>
> There are notes in the source code indicating that the original
> Berkeley Postgres crew thought about this and decided it wasn't
> worth the trouble.

Yes, agreed.  Can anyone measure the difference.  It would show up
accessing columns past the variable length column.

--
  Bruce Momjian                        |  http://www.op.net/~candle
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026