Subject Descending select is much slower than ascending
Author Sean
Hi,

I have a table of about 3 million records. The table A has many
columns, among them are ID (Primary key, BigInt, auto-increasing), and
update_time (DateTime).

An ascending query completes in about 1 second:
select first 1000 * from A
where update_time >= '13-JUN-2006 00:00:00'
and update_time <= '13-JUN-2007 00:00:00'
and id <=3000000
and id >= 2000

Adopted plan is: PLAN(A INDEX(PK_TMC_EVENTS))

but a descending query returns after 2 minutes:
select first 1000 * from A
where update_time >= '13-JUN-2006 00:00:00'
and update_time <= '13-JUN-2007 00:00:00'
and id <= 3000000
and id >= 2000
order by id desc

Adopted plan is: PLAN(A ORDER A_IDX_ID_DESC)


Several relevant indexes of table A are:
1. PK_A (PRIMARY KEY INDEX) on column ID, ascending
2. A_IDX_ID_DESC on column ID, descending
3. A_IDX_UPDATE_TIME_ASC on column update_time, ascending
4. A_IDX_UPDATE_TIME_DESC on column update_time, descending

Can anyone help to improve descending query?

Thanks a lot!
Sean