Skip site navigation (1) Skip section navigation (2)

Re: [HACKERS] Reminder: Indices are not used

From: "Vadim B(dot) Mikheev" <vadim(at)sable(dot)krasnoyarsk(dot)su>
To: Ulrich Voss <voss(at)vocalweb(dot)de>
Cc: PostgreSQL Hackers <hackers(at)postgreSQL(dot)org>
Subject: Re: [HACKERS] Reminder: Indices are not used
Date: 1998-03-31 08:20:55
Message-ID: 3520A766.F958C09A@sable.krasnoyarsk.su (view raw or flat)
Thread:
Lists: pgsql-hackers
Could you post EXPLAINs from 6.2 for the _same_ data/schema ?

As for 6.3 - I just added

CREATE INDEX i_trans on trans (spieler_nr, wpk_nr);

and see near the same performance for all possible plans (NestLoop,
MergeJoin & HashJoin) - you are able to restrict possible plans
using -fX backend' option... NestLoop is slowest (I used -fh -fm to
get it).

My recommendation is to don't create 1-key indices - trans(spieler_nr) &
trans(wpk_nr), - but create 2-key indices - trans (spieler_nr, wpk_nr) &
trans (wpk_nr, spieler_nr).

Nevertheless, I'm interested in 6.2(.1 ?) EXPLAIN..

Vadim

Ulrich Voss wrote:
> 
> Hi Hackers,
> 
> I (and at least four others) reported strange behaviour of PG 6.3(.1),
> which under certain circumstances doesn't use indices like the versions
> before.
> 
> So we still have to use 6.2.1 (now with the Massimo patches). For us
> 6.2.1 is three times faster than 6.3.
> 
> I have narrowed the problem down a bit, so please take a look:
> 
> We have two tables:
> 
> CREATE TABLE trans (spieler_nr int4, wpk_nr int4, state char, anzahl
> int4, buyprice float8, buydate date, sellprice float8, selldate date,
> mail char) archive = none;
> CREATE TABLE kurse (wpk_nr int4, name text, curr char4, kurs float8,
> datum date, art char, high float8, low float8, open float8, old float8)
> archive = none;
> 
> with three indices
> 
> CREATE  INDEX i_kurse_wpk_nr on kurse using btree ( wpk_nr int4_ops );
> CREATE  INDEX i_trans_wpk_nr on trans using btree ( wpk_nr int4_ops );
> CREATE  INDEX i_trans_spieler_nr on trans using btree ( spieler_nr
> int4_ops );
> 
> If I do this select:
> 
> test=> explain SELECT * from Trans, Kurse where
> Kurse.wpk_nr=Trans.wpk_nr and Trans.spieler_nr=3;
> NOTICE:  QUERY PLAN:
> 
> Hash Join  (cost=408.60 size=1364 width=103)
>   ->  Seq Scan on kurse  (cost=238.61 size=4958 width=65)
>   ->  Hash  (cost=0.00 size=0 width=0)
>         ->  Index Scan on trans  (cost=3.41 size=29 width=38)
> 
> I get the seq scan, which slows the query down tremendously compared to
> 6.2.
> 
> With the query:
> 
> test=> explain SELECT * from Trans, Kurse where
> Kurse.wpk_nr=Trans.wpk_nr;
> NOTICE:  QUERY PLAN:
> 
> Merge Join  (cost=7411.81 size=3343409 width=103)
>   ->  Index Scan on kurse  (cost=337.90 size=4958 width=65)
>   ->  Index Scan on trans  (cost=4563.60 size=71112 width=38)
> 
> everything is fine.
> 
> For your convenience I have a dump of the database with some real world
> data und the selects (and some vacuums of course) on our web server.
> 
> You can download it via HTTP
> 
> http://www.vocalweb.de/test_index.dump.gz
> 
> It's around 1 Mb.
> 
> Please take a look at this, cause this seems to be a major bug in
> optimizer/analyzer code somewhere and we are not the only ones who see
> this problem.
> 
> TIA
> 
> Ulrich

In response to

Responses

pgsql-hackers by date

Next:From: Goran ThyniDate: 1998-03-31 08:56:03
Subject: free-text searching
Previous:From: Zeugswetter Andreas SARZDate: 1998-03-31 07:48:39
Subject: Re: [HACKERS] Re: Let's talk up 6.3

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group