Optimal indicies - Mailing list pgsql-general

From Oleg Broytmann
Subject Optimal indicies
Date
Msg-id Pine.SOL2.3.96.SK.990416164741.5074A-100000@sun.med.ru
Whole thread Raw
List pgsql-general
Hello!

   It is definitely FAQ, but I haven't found an answer in docs or mailing
list.
   How do I create indicies? (No, no, I know CREATE INDEX syntax :) But how
do I plan my indicies that optimizer will use? I expected a topic in
postgres guides, but there is no one. Any general advice?

   For example, here is a table (I am not showing here other tables, I
think they are not important):

-- Position's rating for today for every city
CREATE TABLE pos_rating (
   pos_id int4 not null references positions (pos_id),
   date_i date default current_date,
   city_id int2 not null references cities (city_id),
   rating float default 5 check (rating >= 1 and rating <= 10),
   primary key (pos_id, date_i, city_id)
);

   Currently, there is only one index for primary key.

   And here is a query cost. Index is not used. What index I need to add?
Do I need to rewrite queries (using EXIST instaed of IN, as it once
suggested)?

EXPLAIN SELECT pos_id, rating FROM pos_rating
   WHERE pos_id IN
      (SELECT pos_id FROM positions WHERE subsec_id = 1 AND status = 'A')
   AND date_i = current_date AND city_id = 2
ORDER BY rating ;

NOTICE:  QUERY PLAN:

Sort  (cost=236.43 size=0 width=0)
  ->  Seq Scan on pos_rating  (cost=236.43 size=5 width=12)
        SubPlan
          ->  Seq Scan on positions  (cost=3.11 size=3 width=4)

Oleg.
----
    Oleg Broytmann     http://members.xoom.com/phd2/     phd2@earthling.net
           Programmers don't die, they just GOSUB without RETURN.



pgsql-general by date:

Previous
From: José Soares
Date:
Subject: Re: [GENERAL] Does Postgres supoort this type?
Next
From: Oleg Broytmann
Date:
Subject: PostgreSQL WWW: Software