Re: Appropriate indices to create for these queries

Поиск
Список
Период
Сортировка
От Richard Huxton
Тема Re: Appropriate indices to create for these queries
Дата
Msg-id 00a101c0bc14$82eb4b40$1001a8c0@archonet.com
обсуждение исходный текст
Ответ на Appropriate indices to create for these queries  ("Gerald Gutierrez" <gutz@kalador.com>)
Список pgsql-sql
From: "Gerald Gutierrez" <gutz@kalador.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



В списке pgsql-sql по дате отправления:

Предыдущее
От: "Picard, Cyril"
Дата:
Сообщение: passing null parameter to plpgsq functions
Следующее
От: "Richard Huxton"
Дата:
Сообщение: Re: passing null parameter to plpgsq functions