X-Original-To: pgsql-general-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [200.46.204.2]) by svr1.postgresql.org (Postfix) with ESMTP id A04B6D1D80F for ; Wed, 19 Nov 2003 12:24:00 +0000 (GMT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024) with ESMTP id 60474-07 for ; Wed, 19 Nov 2003 08:23:31 -0400 (AST) Received: from smtp-send.myrealbox.com (smtp-send.myrealbox.com [192.108.102.143]) by svr1.postgresql.org (Postfix) with ESMTP id 9B571D1D630 for ; Wed, 19 Nov 2003 08:23:28 -0400 (AST) Received: from myrealbox.com shridhar_daithankar@smtp-send.myrealbox.com [202.54.11.72] by smtp-send.myrealbox.com with NetMail SMTP Agent $Revision: 3.44 $ on Novell NetWare via secured & encrypted transport (TLS); Wed, 19 Nov 2003 05:23:36 -0700 Message-ID: <3FBB60BE.4010407@myrealbox.com> Date: Wed, 19 Nov 2003 17:53:26 +0530 From: Shridhar Daithankar User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20031013 Thunderbird/0.3 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Uros Cc: pgsql-general@postgresql.org Subject: Re: Optimizing query References: <81222392078.20031119114141@sir-mag.com> In-Reply-To: <81222392078.20031119114141@sir-mag.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at postgresql.org X-Archive-Number: 200311/987 X-Sequence-Number: 52637 Uros wrote: > Hello! > > I have some trouble getting good results from my query. > > here is structure > > stat_views > id | integer > id_zone | integer > created | timestamp > > > I have btree index on created and also id and there is 1633832 records in > that table > > First of all I have to manualy set seq_scan to OFF because I always get > seq_scan. When i set it to off my explain show: > > explain SELECT count(*) as views FROM stat_views WHERE id = 12; > QUERY PLAN > ---------------------------------------------------------------------------------------------------- > Aggregate (cost=122734.86..122734.86 rows=1 width=0) > -> Index Scan using stat_views_id_idx on stat_views (cost=0.00..122632.60 rows=40904 width=0) > Index Cond: (id = 12) > > But what I need is to count views for some day, so I use > > explain SELECT count(*) as views FROM stat_views WHERE date_part('day', created) = 18; > > QUERY PLAN > ------------------------------------------------------------------------------------ > Aggregate (cost=100101618.08..100101618.08 rows=1 width=0) > -> Seq Scan on stat_views (cost=100000000.00..100101565.62 rows=20984 width=0) > Filter: (date_part('day'::text, created) = 18::double precision) > > > How can I make this to use index and speed the query. Now it takes about 12 > seconds. Can you post explain analyze for the same? Shridhar