Re: A question about indexes...

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: A question about indexes...
Дата
Msg-id 24199.965540034@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: A question about indexes...  (Alexaki Sofia <alexaki@ics.forth.gr>)
Список pgsql-sql
Alexaki Sofia <alexaki@ics.forth.gr> writes:
> But as I see from the query plan the indexes are not used, instead
> sequential search  is done either I define indexes or not.
> As you can see below the query plan remains the same.
> Is that reasonable??? Shouldn't Postgresql use the indexes in order 
> to optimize question???

Not necessarily.  Since you're just doing a join without restricting
the query to a subset of either table, the indexes would only be
useful as a means of ordering the inputs to a mergejoin --- and an
indexscan over a whole table is *not* particularly fast, because of
all the random seeks involved.

The plausible plans for this sort of query are basically

Merge Join-> Index Scan on t1-> Index Scan on t2

Merge Join-> Sort    -> Seq Scan on t1-> Sort    -> Seq Scan on t2

Hash Join-> Seq Scan on t1-> Seq Scan on t2

(Postgres also considers mergejoins with indexscan on one side and
explicit sort on the other, but for brevity I ignore that possibility.)

Any of these might be the best choice depending on number of rows,
width of each row, and harder-to-predict factors like how well-ordered
the tuples are already.  The planner's cost models are evidently
predicting that the hash join will be the quickest.  You could
experiment, if you're interested, by forcing the choice by setting
ENABLE_HASHJOIN and ENABLE_SORT on or off, and then comparing the
estimated costs shown by EXPLAIN and the actual measured query
runtimes.  If the estimated-cost ratios are wildly at variance with
the real runtimes then you have a legitimate gripe.  But your gripe
should be that the cost models don't reflect reality, not that Postgres
ignores your indexes.
        regards, tom lane


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

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: What's ETA for read/write Views?
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Database in recovery mode