Received: from localhost (wm.hub.org [200.46.204.128]) by postgresql.org (Postfix) with ESMTP id 299639FB21D for ; Wed, 27 Sep 2006 12:31:07 -0300 (ADT) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.128]) (amavisd-new, port 10024) with ESMTP id 99257-08 for ; Wed, 27 Sep 2006 15:31:02 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey- Received: from exchange.g2switchworks.com (mail.g2switchworks.com [63.87.162.25]) by postgresql.org (Postfix) with ESMTP id CA9409FB1E6 for ; Wed, 27 Sep 2006 12:31:01 -0300 (ADT) Received: from 10.10.1.37 ([10.10.1.37]) by exchange.g2switchworks.com ([10.10.1.2]) with Microsoft Exchange Server HTTP-DAV ; Wed, 27 Sep 2006 15:30:59 +0000 Received: from state.g2switchworks.com by mail.g2switchworks.com; 27 Sep 2006 10:30:59 -0500 Subject: Re: Merge Join vs Nested Loop From: Scott Marlowe To: Tobias Brox Cc: Tom Lane , pgsql-performance@postgresql.org In-Reply-To: <20060927152655.GF17834@oppetid.no> References: <20060926193553.GA27268@oppetid.no> <719.1159308596@sss.pgh.pa.us> <20060927094803.GA11245@oppetid.no> <1159369111.4643.0.camel@localhost.localdomain> <20060927150512.GE17834@oppetid.no> <1159370365.4643.7.camel@localhost.localdomain> <20060927152655.GF17834@oppetid.no> Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1159371059.26848.82.camel@state.g2switchworks.com> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 (1.4.6-2) Date: Wed, 27 Sep 2006 10:30:59 -0500 X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=SPF_PASS, UNPARSEABLE_RELAY X-Spam-Level: X-Archive-Number: 200609/355 X-Sequence-Number: 21041 On Wed, 2006-09-27 at 10:26, Tobias Brox wrote: > [Scott Marlowe - Wed at 10:19:24AM -0500] > > So, by decreasing them, you should move away from nested loops then, > > right? Has that not worked for some reason? > > I want to move to nested loops, they are empirically faster in many of > our queries, and that makes sense since we've got quite big tables and > most of the queries only touch a small partition of the data. > > I've identified that moving any of the cost constants (including > random_page_cost) upwards gives me the right result, but I'm still wary > if this is the right thing to do. Even if so, what constants should I > target first? I could of course try to analyze a bit what constants > give the biggest impact. Then again, we have many more queries hitting > the database than the few I'm doing research into (and those I'm doing > research into is even very simplified versions of the real queries). Ahh, the other direction then. I would think it's safer to nudge these a bit than to drop random page cost to 1 or set effective_cache_size to 1000 etc... But I'm sure you should test the other queries and / or keep an eye on your database while running to make sure those changes don't impact other users.