Re: Indexes works only on miss - Mailing list pgsql-general

From Jim C. Nasby
Subject Re: Indexes works only on miss
Date
Msg-id 20060106200033.GT3902@pervasive.com
Whole thread Raw
In response to Re: Indexes works only on miss  (Sebastjan Trepca <trepca@gmail.com>)
List pgsql-general
You might need to increase the statistics target (for that table or for
the cluster), and/or decrease random_page_cost (most folks find
something between 2 and 3 to perform the best).

On Fri, Jan 06, 2006 at 07:07:54PM +0100, Sebastjan Trepca wrote:
> Thank you for exhaustive explanation, this is the output with analyze :
>
> "Seq Scan on test  (cost=0.00..120.67 rows=627 width=11) (actual time=
> 0.018..5.467 rows=621 loops=1)"
> "  Filter: (("Owner")::text = 'root'::text)"
> "Total runtime: 7.288 ms"
>
> "Index Scan using idx_test_owner on test  (cost=0.00..96.75 rows=28
> width=11) (actual time=0.025..0.025 rows=0 loops=1)"
> "  Index Cond: (("Owner")::text = 'blah'::text)"
> "Total runtime: 0.064 ms"
>
> I tried a search term in query with less rows and it used index scan too. I
> gues I didn't understand how indexes work.
>
> Thanks for help, Sebastjan
>
>
> On 1/6/06, Michael Fuhr <mike@fuhr.org> wrote:
> >
> > On Fri, Jan 06, 2006 at 05:42:41PM +0100, Sebastjan Trepca wrote:
> > > I really don't understand this behaviour. I have a table with column
> > "owner"
> > > on which I created an index with btree method. The table contains around
> > 3k
> > > rows.
> > >
> > > Now I run it using EXPLAIN command.
> >
> > Please post the EXPLAIN ANALYZE output -- that'll show how accurate
> > the planner's estimates are.
> >
> > Has the table been vacuumed and analyzed lately?
> >
> > >This query has some results:
> > >
> > > explain SELECT "Name" FROM test WHERE "Owner"='root'
> > >
> > > "Seq Scan on test  (cost=0.00..119.11 rows=263 width=11)"
> > > "  Filter: (("Owner")::text = 'root'::text)"
> >
> > The planner estimates that this query will return 263 rows; apparently
> > that's enough of the table that the planner thinks a sequence scan
> > would be faster than an index scan.  An index scan has to hit the
> > index *and* the table, so it's a fallacy to assume that an index
> > scan will always be faster.  You can play with enable_seqscan to
> > see if an index scan would indeed be faster.  For example:
> >
> > SET enable_seqscan TO off;
> > EXPLAIN ANALYZE SELECT ...
> > SET enable_seqscan TO on;
> > EXPLAIN ANALYZE SELECT ...
> >
> > Be aware of disk caching when comparing execution times for different
> > queries: one query might be slower than another not because of a
> > less efficient plan, but rather because it had to fetch data from
> > disk and the "faster" query then took advantage of that cached data.
> > Run each query several times to allow for this.
> >
> > > Query without results:
> > >
> > > explain SELECT "Name" FROM test WHERE "Owner"='blah'
> > >
> > > "Index Scan using idx_test_owner on test  (cost=0.00..96.56 rows=28
> > > width=11)"
> > > "  Index Cond: (("Owner")::text = 'blah'::text)"
> >
> > The planner estimates that this query will return 28 rows, which
> > makes it more likely that an index scan would be faster because
> > that's a much smaller percentage of the table.
> >
> > > Why is this happening? Is it because of the memory? I'm running on
> > default
> > > db settings, version 8.0 and SUSE 10.
> >
> > You can use various tuning guides to help adjust your settings.
> > Here are a couple of links:
> >
> > http://www.powerpostgresql.com/PerfList
> > http://www.revsys.com/writings/postgresql-performance.html
> >
> > Configuration settings can lead the planner to favor index scans,
> > but as I mentioned earlier, and index scan isn't always faster than
> > a sequential scan.
> >
> > --
> > Michael Fuhr
> >

--
Jim C. Nasby, Sr. Engineering Consultant      jnasby@pervasive.com
Pervasive Software      http://pervasive.com    work: 512-231-6117
vcard: http://jim.nasby.net/pervasive.vcf       cell: 512-569-9461

pgsql-general by date:

Previous
From: Andreas Kretschmer
Date:
Subject: Re: Reordering columns in a table
Next
From: "Jim C. Nasby"
Date:
Subject: Re: Reordering columns in a table