Backwards index scan

Поиск
Список
Период
Сортировка
От Carlos Oliva
Тема Backwards index scan
Дата
Msg-id 200606061459.KAA06172@pbsi.pbsinet.com
обсуждение исходный текст
Ответы Re: Backwards index scan  (Alan Hodgson <ahodgson@simkin.ca>)
Список pgsql-general

Are there any configurations/flags that we should re-set for the database (v 7.4.x) in order to enable a backwards scan on an index?  We are trying to query a table in descending order.  We added an index that we were hoping would be scanned backwards but EXPLAIN never indicates that the optimizer will carry out a backwards scan on the index that we added to the table.  EXPLAIN indicates that the optimizer will always use a sequential scan if we order the query in descending order.

 

OUR TESTS

We are conducting a simple test to asses if the optimizer ever uses the index.  The table has several columns and the select statement is as follows: select * from ord0007 order by prtnbr, ordschdte desc.  The index that we added is "ord0007_k" btree (prtnbr, ordschdte).  Prtnbr is numeric(10,0) not null, and ordschdte is date.

 

We find that the optimizer uses the index for the query if we set enable_sort to off and the query uses ordschdte in ascending order as follows: select * from ord0007 order by prtnbr, ordschdte.  For this query, EXPLAIN returns the following output:

                                   QUERY PLAN

--------------------------------------------------------------------------------

 Index Scan using ord0007_k on ord0007  (cost=0.00..426.03 rows=232 width=1816)

(1 row)

 

However the optimizer uses a sequential scan if we order by a descending ordschdte as follows: select * from ord0007 order by prtnbr, ordschdte desc.  For this query, whether we set the enable_sort to on or off, EXPLAIN returns the following output:

                             QUERY PLAN

--------------------------------------------------------------------

 Sort  (cost=100000155.44..100000156.02 rows=232 width=1816)

   Sort Key: prtnbr, ordschdte

   ->  Seq Scan on ord0007  (cost=0.00..146.32 rows=232 width=1816)

(3 rows)

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: ALTER USER ..... PASSWORD ....
Следующее
От: Alan Hodgson
Дата:
Сообщение: Re: Backwards index scan