Received: from localhost (maia-1.hub.org [200.46.204.191]) by postgresql.org (Postfix) with ESMTP id 6FEFC9FB843 for ; Mon, 19 Mar 2007 18:57:39 -0300 (ADT) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.191]) (amavisd-new, port 10024) with ESMTP id 89736-01 for ; Mon, 19 Mar 2007 18:57:32 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.4 Received: from mail.gigared.com (mail.gigared.com [190.7.31.229]) by postgresql.org (Postfix) with ESMTP id 804FE9FB7D3 for ; Mon, 19 Mar 2007 18:57:32 -0300 (ADT) Received: from [10.41.137.75] (unknown [10.41.137.75]) by mail.gigared.com (Postfix) with ESMTP id 4065CE486D8; Mon, 19 Mar 2007 19:02:02 -0300 (ART) Message-ID: <45FF07F5.4020204@bugs.unl.edu.ar> Date: Mon, 19 Mar 2007 19:00:21 -0300 From: Martin Marques User-Agent: Thunderbird 1.5.0.10 (X11/20070302) MIME-Version: 1.0 To: mailreg@numerixtechnology.de CC: pgsql-sql@postgresql.org Subject: Re: triple self-join crawling References: <45FD9840.4040305@numerixtechnology.de> <45FE4848.5040407@numerixtechnology.de> <45FEB611.8070606@numerixtechnology.de> In-Reply-To: <45FEB611.8070606@numerixtechnology.de> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-Gigared-MailScanner-Information: Please contact the ISP for more information X-Gigared-MailScanner: Found to be clean X-Gigared-MailScanner-From: martin@bugs.unl.edu.ar X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.108 tagged_above=0 required=5 tests=AWL, BAYES_50 X-Spam-Level: X-Archive-Number: 200703/255 X-Sequence-Number: 27893 T E Schmitz escribió: > > QUERY PLAN > GroupAggregate (cost=1370368.19..1435888.88 rows=5801 width=56) (actual > time=11945.030..13163.156 rows=5801 loops=1) > -> Sort (cost=1370368.19..1379715.86 rows=3739067 width=56) (actual > time=11944.753..12462.623 rows=120117 loops=1) > Sort Key: history.stock, history."day", history.high, history.low > -> Hash Left Join (cost=160.02..391554.63 rows=3739067 > width=56) (actual time=52.746..3778.409 rows=120117 loops=1) > Hash Cond: ((("outer".stock)::text = > ("inner".stock)::text) AND ("outer"."day" = "inner"."day")) > Join Filter: ("inner"."day" >= ("outer"."day" - 7)) > -> Nested Loop Left Join (cost=0.00..204441.26 > rows=3739067 width=57) (actual time=0.077..2313.375 rows=120117 loops=1) It's estimating >3M, but it finds 120K rows. > Join Filter: (("inner".stock)::text = > ("outer".stock)::text) > -> Seq Scan on history (cost=0.00..131.01 > rows=5801 width=34) (actual time=0.016..34.845 rows=5801 loops=1) > -> Index Scan using idx_history_day on history > past_month (cost=0.00..22.32 rows=645 width=23) (actual > time=0.020..0.185 rows=21 loops=5801) > Index Cond: ((past_month."day" >= > ("outer"."day" - 30)) AND (past_month."day" < "outer"."day")) > -> Hash (cost=131.01..131.01 rows=5801 width=23) (actual > time=52.608..52.608 rows=5801 loops=1) > -> Seq Scan on history past_week (cost=0.00..131.01 > rows=5801 width=23) (actual time=0.010..25.110 rows=5801 loops=1) > > Total runtime: 13187.729 ms Try running a vacuum analyze on the database (or at least the tables which differ in rows estimated and actual (history for example)) -- select 'mmarques' || '@' || 'unl.edu.ar' AS email; --------------------------------------------------------- Martín Marqués | Programador, DBA Centro de Telemática | Administrador Universidad Nacional del Litoral ---------------------------------------------------------