From: | "Richard Huxton" <dev(at)archonet(dot)com> |
---|---|
To: | "Gerald Gutierrez" <gutz(at)kalador(dot)com>, <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: Appropriate indices to create for these queries |
Date: | 2001-04-03 08:03:02 |
Message-ID: | 00a101c0bc14$82eb4b40$1001a8c0@archonet.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
From: "Gerald Gutierrez" <gutz(at)kalador(dot)com>
>
> I've been looking into indices and which ones to create and I'm getting
> myself a little confused. The "PostgreSQL Introduction and Concepts" book
> didn't help very much. I wonder if a kind soul can give me some tips.
>
> SELECT * FROM T1 WHERE a=1 and b='hello';
>
> Is the appropriate index for this query:
>
> CREATE INDEX ndx ON T1 (a, b) ?
Maybe - you seem to have got to the core of the matter below...
> When I was testing, it seemed that even if I created the index with only
> "a", EXPLAIN told me that it would just do an index scan, seemingly
> indicating that it didn't matter whether I had an "a" index, or an "a, b"
> index.
For the above query, any of : index on "a" , "b", "a,b" will probably be
used (if you have enough data to justify it).
> How about for WHERE a=1 or b='hello' and other more complex forms? Is
there
> documentation that describes a variety of different queries and what kind
of
> indices are best?
In this case, an index on "a,b" isn't much use since the b='hello' values
are presumably scattered amongst all the various 'a' values.
In practice, unless you do a lot of a=1 and b="hello" queries you're
probably better off with separate indexes on a and b, or possibly even just
on one of them.
I tend to apply indexes to fields that take part in a join then add them one
at a time to other fields as it becomes clear which takes part in important
queries. Don't forget that it takes a certain amount of effort to maintain
an index.
You've already found the EXPLAIN command - this is your best guide to where
an index can be useful.
- Richard Huxton
From | Date | Subject | |
---|---|---|---|
Next Message | Richard Huxton | 2001-04-03 08:05:32 | Re: passing null parameter to plpgsq functions |
Previous Message | Picard, Cyril | 2001-04-03 07:00:26 | passing null parameter to plpgsq functions |