X-Original-To: pgsql-sql@postgresql.org Received: from spampd.localdomain (postgresql.org [64.49.215.8]) by postgresql.org (Postfix) with ESMTP id E54DF475F1B for ; Fri, 11 Apr 2003 18:18:57 -0400 (EDT) Received: from nycsmtp4out-eri0.rdc-nyc.rr.com (nycsmtp4out-eri0.rdc-nyc.rr.com [24.29.99.227]) by postgresql.org (Postfix) with ESMTP id 1E832475EDF for ; Fri, 11 Apr 2003 18:18:57 -0400 (EDT) Received: from math-hat.com (66-65-68-41.nyc.rr.com [66.65.68.41]) by nycsmtp4out-eri0.rdc-nyc.rr.com (8.12.1/Road Runner SMTP Server 1.0) with SMTP id h3BMDuYr002671; Fri, 11 Apr 2003 18:13:56 -0400 (EDT) Received: (nullmailer pid 23336 invoked by uid 1000); Fri, 11 Apr 2003 22:18:59 -0000 To: Stephan Szabo Cc: Subject: Re: count(*), EXISTS, indexes Mail-Copies-To: never From: Itai Zukerman Date: Fri, 11 Apr 2003 18:18:59 -0400 In-Reply-To: <20030411150926.C838-100000@megazone23.bigpanda.com> (Stephan Szabo's message of "Fri, 11 Apr 2003 15:12:09 -0700 (PDT)") Message-ID: <8765pkr830.fsf@matt.w80.math-hat.com> User-Agent: Gnus/5.090018 (Oort Gnus v0.18) Emacs/21.2 (gnu/linux) References: <20030411150926.C838-100000@megazone23.bigpanda.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Status: No, hits=-31.7 required=5.0 tests=BAYES_01,IN_REP_TO,QUOTED_EMAIL_TEXT,REFERENCES, REPLY_WITH_QUOTES,UPPERCASE_25_50,USER_AGENT_GNUS_UA autolearn=ham version=2.50 X-Spam-Level: X-Spam-Checker-Version: SpamAssassin 2.50 (1.173-2003-02-20-exp) X-Archive-Number: 200304/194 X-Sequence-Number: 12895 >> > CREATE TABLE A (x int PRIMARY KEY, real v); >> > CREATE TABLE B (x int); >> > >> > SELECT sum(v) FROM A WHERE EXISTS (SELECT 1 FROM B WHERE A.x=B.x); >> >> This seems to be a reasonably-performing workaround: >> >> SELECT DISTINCT x INTO TEMP C FROM A,B WHERE A.x=B.x; >> SELECT sum(v) FROM A,C WHERE A.x=C.x; > > Hmm, given that, would something like: > > select sum(v) from > (select distinct on(x) x,v from a,b where a.x=b.x) as foo; Excellent. Thanks! -- Itai Zukerman