X-Original-To: pgsql-performance-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id CDA3552A06 for ; Thu, 11 Aug 2005 10:01:22 -0300 (ADT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 12761-05 for ; Thu, 11 Aug 2005 13:01:18 +0000 (GMT) Received: from mail.metronet.co.uk (mail.metronet.co.uk [213.162.97.75]) by svr1.postgresql.org (Postfix) with ESMTP id 52F1E529F9 for ; Thu, 11 Aug 2005 10:01:18 -0300 (ADT) Received: from mainbox.archonet.com (84-51-143-99.archon037.adsl.metronet.co.uk [84.51.143.99]) by smtp.metronet.co.uk (MetroNet Mail) with ESMTP id D3DE040C066; Thu, 11 Aug 2005 14:01:08 +0100 (BST) Received: from localhost (localhost.localdomain [127.0.0.1]) by mainbox.archonet.com (Postfix) with ESMTP id 799B915EDA; Thu, 11 Aug 2005 13:49:15 +0100 (BST) Received: from mainbox.archonet.com ([127.0.0.1]) by localhost (mainbox [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30982-04; Thu, 11 Aug 2005 13:49:11 +0100 (BST) Received: from [192.168.1.17] (client17.office.archonet.com [192.168.1.17]) by mainbox.archonet.com (Postfix) with ESMTP id 5B67615ED9; Thu, 11 Aug 2005 13:49:11 +0100 (BST) Message-ID: <42FB4946.6030105@archonet.com> Date: Thu, 11 Aug 2005 13:49:10 +0100 From: Richard Huxton User-Agent: Mozilla Thunderbird 1.0.2 (X11/20050317) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Luis Cornide Arce Cc: PGSL-PERFORMANCE LIST Subject: Re: Why is not using the index References: <42FB3791.2060200@almabioinfo.com> In-Reply-To: <42FB3791.2060200@almabioinfo.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=0.057 tagged_above=0 required=5 tests=[AWL=0.007, FORGED_RCVD_HELO=0.05] X-Spam-Level: X-Archive-Number: 200508/119 X-Sequence-Number: 13866 Luis Cornide Arce wrote: > Hi everyone, > > I have some problems with a quite long query and the plan postgreSQL is > choosing. The query joins 12 tables and in the WHERE clause I use a IN > expression with a lot of identifiers (up to 2000). The problem is that > the planner is proposing a seq_scan on two tables 2M rows each > (internalexpressionprofile and expressionprofile) > > I have just try this query (after doing a vacuum analyze), in the 'IN' > clause there are 1552 identifiers, and the query should return 14K rows. > I'm using a PostgreSQL 8.0.2 on a SuSE 8.1 with 1GB of RAM. > WHERE epg.expprogeneid IN (80174,84567,...) AND > epg.expprogeneid=epro.expprogeneid -> Hash Join (cost=15413.58..78079.33 rows=24339 width=134) (actual time=1489.347..5721.306 rows=41904 loops=1) Hash Cond: ("outer".expprogeneid = "inner".expprogeneid) -> Seq Scan on expressionprofile epro (cost=0.00..48263.24 rows=2831824 width=8) (actual time=0.039..3097.656 rows=2839676 loops=1) -> Index Scan using expprogene_pk, expprogene_pk, [......] on expprogene epg (cost=0.00..10698.83 rows=1546 width=8) (actual time=0.027..15.907 rows=1552 loops=1) Index Cond: ((expprogeneid = 80174) OR (expprogeneid = 84567) OR (expprogeneid = 83608) OR [OR ....]) OK - it looks like the "IN" clause is using your index. The fact that it's using a Seq-scan on "expressionprofile epro" looks odd though, especially since it expects 24339 matches (out of 2.8 million rows - that should favour an index). Of course, I've not considered the context of the rest of the query, but I'd expect the index to be used. Do you have any unusual config settings? -- Richard Huxton Archonet Ltd