Re: index scan on =, but not < ?

Поиск
Список
Период
Сортировка
От Thomas F.O'Connell
Тема Re: index scan on =, but not < ?
Дата
Msg-id 9b7a46c3c46a4fdf1beeef7eb5727493@sitening.com
обсуждение исходный текст
Ответ на index scan on =, but not < ?  ("Rick Schumeyer" <rschumeyer@ieee.org>)
Ответы Re: index scan on =, but not < ?
Список pgsql-performance
Your hypothesis about index usage of count() and max() is correct.

As for why you see index usage in your first example query and not your
second: compare the number of rows in question. An index is extremely
useful if 19 rows will be returned. But when 62350411 rows will be
returned, you're talking about a substantial fraction of the table. A
sequential scan will probably correctly be judged to be faster by the
planner.

-tfo

--
Thomas F. O'Connell
Co-Founder, Information Architect
Sitening, LLC
http://www.sitening.com/
110 30th Avenue North, Suite 6
Nashville, TN 37203-6320
615-260-0005

On Mar 8, 2005, at 12:35 PM, Rick Schumeyer wrote:

> I have two index questions.  The first is about an issue that has been
> recently discussed,
> and I just wanted to be sure of my understanding.  Functions like
> count(), max(), etc. will
> use sequential scans instead of index scans because the index doesn’t
> know which rows
> are actually visible…is this correct?
>
>  
>
> Second:
>
>  
>
> I created an index in a table with over 10 million rows.
> The index is on field x, which is a double.
>
> The following command, as I expected, results in an index scan:
>
> =# explain select * from data where x = 0;
>
>                                QUERY PLAN
>
> -----------------------------------------------------------------------
> --
>  Index Scan using data_x_ix on data  (cost=0.00..78.25 rows=19
> width=34)
>    Index Cond: (x = 0::double precision)
> (2 rows)
>  
>
> But this command, in which the only difference if > instead of =, is a
> sequential scan.
>
>
> =# explain select * from data where x > 0;
>
>                             QUERY PLAN
>
> ------------------------------------------------------------------
>
>  Seq Scan on data  (cost=0.00..1722605.20 rows=62350411 width=34)
>    Filter: (x > 0::double precision)
> (2 rows)
>
> Why is this?
>
> (This is with pg 8.0.1 on a PC running FC3 with 1GB ram…if it matters)


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

Предыдущее
От: "Rick Schumeyer"
Дата:
Сообщение: index scan on =, but not < ?
Следующее
От: John Arbash Meinel
Дата:
Сообщение: Re: index scan on =, but not < ?