Thread: performance versus order of fields in row

performance versus order of fields in row

From
"D. Stimits"
Date:
I'm not looking for an exact answer here, but instead something more
"rule of thumb". If I have a table with many fields, and I retrieving
small groups of fields during a SELECT, whereby the groups of fields are
indexed and/or clustered, will I get a faster select in the left-most
fields, or the right-most fields? Or will it not matter? It would be
unusual to SELECT *, I expect to be selecting groups of 4 to 16 fields,
and I am wondering if the most often occuring queries might be improved
by placing them at left or right ends of the table (or if there is any
help at all doing this). The selected groups of fields are unlikely to
be used as a search criterion, but instead as simple read-only, while
other fields determine if the row will be included.


Re: performance versus order of fields in row

From
Tom Lane
Date:
"D. Stimits" <stimits@comcast.net> writes:
> I'm not looking for an exact answer here, but instead something more
> "rule of thumb". If I have a table with many fields, and I retrieving
> small groups of fields during a SELECT, whereby the groups of fields are
> indexed and/or clustered, will I get a faster select in the left-most
> fields, or the right-most fields? Or will it not matter?

Fields earlier in the table definition (further to the left) are
marginally faster to access than ones further to the right.  I doubt it
would be real noticeable unless you had hundreds of fields altogether.

            regards, tom lane

Re: performance versus order of fields in row

From
Jan Wieck
Date:
Tom Lane wrote:

>"D. Stimits" <stimits@comcast.net> writes:
>
>
>>I'm not looking for an exact answer here, but instead something more
>>"rule of thumb". If I have a table with many fields, and I retrieving
>>small groups of fields during a SELECT, whereby the groups of fields are
>>indexed and/or clustered, will I get a faster select in the left-most
>>fields, or the right-most fields? Or will it not matter?
>>
>>
>
>Fields earlier in the table definition (further to the left) are
>marginally faster to access than ones further to the right.  I doubt it
>would be real noticeable unless you had hundreds of fields altogether.
>

Do we still "cache" field offsets for not-nullable-fixed-size columns?


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== JanWieck@Yahoo.com #




Re: performance versus order of fields in row

From
Tom Lane
Date:
Jan Wieck <JanWieck@Yahoo.com> writes:
> Tom Lane wrote:
>> Fields earlier in the table definition (further to the left) are
>> marginally faster to access than ones further to the right.  I doubt it
>> would be real noticeable unless you had hundreds of fields altogether.

> Do we still "cache" field offsets for not-nullable-fixed-size columns?

Yeah, we do, but I didn't think he wanted to get into that level of
detail ... in any case it's a safe bet that earlier fields are no slower
than later ones.

            regards, tom lane