Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: how to speed up a "select count(*) from ..."

Re: how to speed up a "select count(*) from ..."

From: Mark D Powell <markp7832_at_my-deja.com>
Date: 2000/05/05
Message-ID: <8eugmv$o8j$1@nnrp1.deja.com>#1/1

In article <3912bb1a$0$63041_at_news.execpc.com>,   "K. Friday" <kfriday_at_execpc.com> wrote:
> Hi,
>
> Does the statement have a "where" clause ? The index will only help if
> you're subsetting the table. If what you're doing is a count of all
 rows in
> the table it will do a full table scan (in fact you generally want it
 to)
> regardless of available indexing.
>
> Ken F.
> "Paolo Polce" <java.group_at_bricabrac.it> wrote in message
> news:8eu49s$4676$1_at_stargate1.inet.it...
> > Hello,
> >
> > I have a table with 40.000 records. There was no primary key on
 the
 table
> > (!) and a "select count(*) from mytable" took about 15 sec.
> > So, now, I've created a primary index on mytable.id field...
> >
> > Well... it still takes 15 sec to count the records... :-(
> > May someone help me?
> >
> > Thank you.
> > Paolo.
> >

Change your select to be like:
select /*+ INDEX_FFS(label PK_NAME) */

       count(key)
from the_Table label;

This should cause Oracle to use the PK to count the number of rows via the index. You can try it without the hint first and see what the explain plan says. Then you can add the hint if necessary.

--
Mark D. Powell  -- The only advice that counts is the advice that
 you follow so follow your own advice --


Sent via Deja.com http://www.deja.com/
Before you buy.
Received on Fri May 05 2000 - 00:00:00 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US