Received: from localhost (unknown [200.46.204.183]) by mail.postgresql.org (Postfix) with ESMTP id BBA5064FCD8 for ; Fri, 5 Dec 2008 07:08:13 -0400 (AST) Received: from mail.postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 82171-02 for ; Fri, 5 Dec 2008 07:08:08 -0400 (AST) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.177]) by mail.postgresql.org (Postfix) with ESMTP id 5BE5664FC6F for ; Fri, 5 Dec 2008 07:08:07 -0400 (AST) Received: from apache.wug.de (pD9EB7BFE.dip.t-dialin.net [217.235.123.254]) by mrelayeu.kundenserver.de (node=mrelayeu7) with ESMTP (Nemesis) id 0ML2xA-1L8YXU0UqB-00080c; Fri, 05 Dec 2008 12:08:05 +0100 Received: from webserv.wug-glas.de ([10.2.16.2] helo=webserv.wug.de ident=mail) by apache.wug.de with esmtp (Exim 4.69) (envelope-from ) id 1L8YXL-0003ux-Q7 for pgsql-performance@postgresql.org; Fri, 05 Dec 2008 12:07:55 +0100 Received: from kretschmer by webserv.wug.de with local (Exim 3.36 #1) id 1L8YXS-0004Hc-00 for pgsql-performance@postgresql.org; Fri, 05 Dec 2008 12:08:02 +0100 Date: Fri, 5 Dec 2008 12:08:02 +0100 From: "A. Kretschmer" To: pgsql-performance@postgresql.org Subject: Re: Trigger function, bad performance Message-ID: <20081205110801.GC25227@a-kretschmer.de> References: <595F977C01388944A4B5158975BB676385ABFD@sgzhmailbox.ggrz-hagen.nrw.de> <595F977C01388944A4B5158975BB676385AC6B@sgzhmailbox.ggrz-hagen.nrw.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <595F977C01388944A4B5158975BB676385AC6B@sgzhmailbox.ggrz-hagen.nrw.de> X-OS: Debian/GNU Linux - weil ich es mir Wert bin! User-Agent: Mutt/1.5.9i X-Provags-ID: V01U2FsdGVkX18/0euMDxoZtjK7RJLBnHAs6WKf0JZctqloGrZ VdyVPwjEZpqq12hU4VoFzSa7M0i7IoRt4J7x0TyIjYQiD0bEc4 a2jlKClfLh9i/WtXfgppQNAAS+S5mCr X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200812/38 X-Sequence-Number: 32074 am Fri, dem 05.12.2008, um 11:41:11 +0100 mailte Rogatzki Rainer folgendes: > -- Example with bad performance since index isn't used > explain > select c.id_country, sum(c.cost) as sum_cost > from costs c, accounting_interval a > where c.id_user = 123 > and c.id_state = 1 > and a.id = 1 > and date(c.request) between a.p_begin and a.p_until > group by id_country; > > -- Example with invoked index (100 times better performance) > explain > select c.id_country, sum(c.cost) as sum_cost > from costs c > where c.id_user = 123 > and c.id_state = 1 > and date(c.request) between '2007-01-01'::date and '2007-01-31'::date > group by id_country; > > Here I cannot see why statement preparation has an effect at all. The planner don't know the parameters at compile-time. Because of this fakt, the planner choose a other plan (a seq-scan). You can try to use execute 'your query'. In this case the planner investigate a new plan, and (maybe) with the index. Andreas -- Andreas Kretschmer Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net