Re: [PERFORM] How to read query plan

From: Miroslav Šulc <miroslav(dot)sulc(at)startnet(dot)cz>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-performance(at)postgreSQL(dot)org, pgsql-hackers(at)postgreSQL(dot)org
Subject: Re: [PERFORM] How to read query plan
Date: 2005-03-14 08:43:19
Message-ID: 42354EA7.4020907@startnet.cz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-performance

Tom Lane wrote:

>...
>I think the reason this is popping to the top of the runtime is that the
>joins are so wide (an average of ~85 columns in a join tuple according
>to the numbers above). Because there are lots of variable-width columns
>involved, most of the time the fast path for field access doesn't apply
>and we end up going to nocachegetattr --- which itself is going to be
>slow because it has to scan over so many columns. So the cost is
>roughly O(N^2) in the number of columns.
>
>
As there are a lot of varchar(1) in the AdDevicesSites table, wouldn't
be helpful to change them to char(1)? Would it solve the variable-width
problem at least for some fields and speed the query up?

>As a short-term hack, you might be able to improve matters if you can
>reorder your LEFT JOINs to have the minimum number of columns
>propagating up from the earlier join steps. In other words make the
>later joins add more columns than the earlier, as much as you can.
>
>
That will be hard as the main table which contains most of the fields is
LEFT JOINed with the others. I'll look at it if I find some way to
improve it.

I'm not sure whether I understand the process of performing the plan but
I imagine that the data from AdDevicesSites are retrieved only once when
they are loaded and maybe stored in memory. Are the columns stored in
the order they are in the SQL command? If so, wouldn't it be useful to
move all varchar fields at the end of the SELECT query? I'm just
guessing because I don't know at all how a database server is
implemented and what it really does.

>..
> regards, tom lane
>
>
Miroslav

Attachment Content-Type Size
miroslav.sulc.vcf text/x-vcard 387 bytes

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Miroslav Šulc 2005-03-14 08:44:48 Re: [PERFORM] How to read query plan
Previous Message Tom Lane 2005-03-14 08:10:38 Re: options in conninfo

Browse pgsql-performance by date

  From Date Subject
Next Message Miroslav Šulc 2005-03-14 08:44:48 Re: [PERFORM] How to read query plan
Previous Message David Greaves 2005-03-14 07:44:53 Re: Postgres on RAID5 (possible sync blocking read type