Received: from maia.hub.org (maia-5.hub.org [200.46.204.29]) by mail.postgresql.org (Postfix) with ESMTP id B533A1337B43 for ; Fri, 26 Nov 2010 05:53:01 -0400 (AST) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.29]) (amavisd-maia, port 10024) with ESMTP id 03725-08 for ; Fri, 26 Nov 2010 09:52:55 +0000 (UTC) X-Greylist: delayed 00:06:37.508647 by SQLgrey-1.7.6 Received: from 26.mail-out.ovh.net (26.mail-out.ovh.net [91.121.27.225]) by mail.postgresql.org (Postfix) with SMTP id 001641337B53 for ; Fri, 26 Nov 2010 05:52:53 -0400 (AST) Received: (qmail 10833 invoked by uid 503); 26 Nov 2010 09:50:36 -0000 Received: from b7.ovh.net (HELO mail403.ha.ovh.net) (213.186.33.57) by 26.mail-out.ovh.net with SMTP; 26 Nov 2010 09:50:36 -0000 Received: from b0.ovh.net (HELO queueout) (213.186.33.50) by b0.ovh.net with SMTP; 26 Nov 2010 11:46:13 +0200 Received: from par69-8-88-161-102-87.fbx.proxad.net (HELO apollo13) (lists%peufeu.com@88.161.102.87) by ns0.ovh.net with SMTP; 26 Nov 2010 11:46:12 +0200 Content-Type: text/plain; charset=utf-8; format=flowed; delsp=yes To: pgsql-performance@postgresql.org, =?utf-8?B?cGFzbWFuIHBhc21hxYRza2k=?= Subject: Re: Optimizing query References: Date: Fri, 26 Nov 2010 10:46:11 +0100 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: "Pierre C" Message-ID: In-Reply-To: User-Agent: Opera Mail/10.62 (Linux) X-Ovh-Tracer-Id: 9359605925767939633 X-Ovh-Remote: 88.161.102.87 (par69-8-88-161-102-87.fbx.proxad.net) X-Ovh-Local: 213.186.33.20 (ns0.ovh.net) X-Spam-Check: DONE|U 0.5/N X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-0.5 tagged_above=-10 required=5 tests=BAYES_05=-0.5, RCVD_IN_DNSWL_NONE=-0.0001 X-Spam-Level: X-Archive-Number: 201011/379 X-Sequence-Number: 41403 Note that your LEFT JOIN condition is probably quite slow... Please post EXPLAIN ANALYZE for this simplified version : SELECT R."Osoba weryfikuj?ca", R."LP", A."NKA", A."NTA", Sum("Ile") FROM "NumeryA" A LEFT JOIN "Rejestr stacji do naprawy" R ON ( A."NKA" = R."Numer kierunkowy" and A."NTA" like R."Numer stacji" and substr(A."NTA",1,5) = substr(R."Numer stacji",1,5) ) WHERE A."DataPliku" >= current_date-4*30 and A."KodB??du"=74::text and R."Data weryfikacji" >= current_date-4*30 GROUP BY R."Osoba weryfikuj?ca",R."LP",A."NKA", A."NTA" ORDER BY Sum("Ile") DESC LIMIT 5000 And also post EXPLAIN ANALYZE for this : SELECT A."NKA", A."NTA", Sum("Ile") AS ss -- if it's in this table FROM "NumeryA" A WHERE A."DataPliku" >= current_date-4*30 and A."KodB??du"=74::text GROUP BY A."NKA", A."NTA"