Re: Use order by clause, got index scan involved - Mailing list pgsql-general
From | Jeff Janes |
---|---|
Subject | Re: Use order by clause, got index scan involved |
Date | |
Msg-id | CAMkU=1w2sGXVr-aMn84f7v2RViZtWS5B3jSp+CmqN0uGkd1PnQ@mail.gmail.com Whole thread Raw |
In response to | Use order by clause, got index scan involved (高健 <luckyjackgao@gmail.com>) |
Responses |
Re: Use order by clause, got index scan involved
|
List | pgsql-general |
Hi all:
What confused me is that: When I select data using order by clause, I got the following execution plan:
postgres=# set session enable_indexscan=true;
SET
postgres=# explain SELECT * FROM pg_proc ORDER BY oid;
QUERY PLAN
----------------------------------------------------------------------------------------
Index Scan using pg_proc_oid_index on pg_proc (cost=0.00..321.60 rows=2490 width=552)
(1 row)
postgres=#
My Question is :
If I want to find record using the where clause which hold the id column, the index scan might be used.
But I just want to get all the records on sorted output format, Why index scan can be used here?
I can’t imagine that:
Step 1 Index is read into memory, then for each tuple in it,
Step 2 Then we got the address of related data block, and then access the data block .
Step 2 will be repeated for many times. I think it is not efficient.
Maybe the database system is clever enough to accumulate data access for same physical page, and reduce the times of physical page acess ?
pgsql-general by date: