Gerald,
Is veh_year a nullable column? If so, an index lookup may
give you incorrect results (nulls are not indexed), so a full table scan will be
used.
Of course, is a full table scan a bad choice? Don't worry
about the access path, find the plan that incurs the fewest I/Os and returns the
quickest.
Dan
Fink
-----Original Message-----
From: Cunningham, Gerald [mailto:[EMAIL PROTECTED]]
Sent: Friday, January 31, 2003 11:31 AM
To: Multiple recipients of list ORACLE-L
Subject: index hint ignored?Hi there.I have a non-unique index on a table, and I'm trying to force Oracle to use the index - but it always does a FTS. Why? (I've tried it with and without the alias)SQL> set autotrace traceonly
SQL> SELECT /*+ INDEX(A,vehicle_veh_year_indx) */ DISTINCT veh_year
2 FROM TIREADVISOR.vehicle A
3 ORDER BY veh_year DESC;20 rows selected.
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=118 Card=20 Bytes=80)1 0 SORT (ORDER BY) (Cost=118 Card=20 Bytes=80)
2 1 SORT (UNIQUE) (Cost=67 Card=20 Bytes=80)
3 2 TABLE ACCESS (FULL) OF 'VEHICLE' (Cost=16 Card=19607 Bytes=78428)===select TABLE_NAME, INDEX_NAME, COLUMN_NAME, COLUMN_POSITION
from dba_ind_columns
where INDEX_OWNER = 'TIREADVISOR'
and TABLE_NAME = ('VEHICLE') order by 1,2,4,3
TABLE_NAME INDEX_NAME
------------------------------ ------------------------------
COLUMN_NAME COLUMN_POSITION
-------------------- ---------------
VEHICLE VEHICLE_PK
VEH_ID 1VEHICLE VEHICLE_VEH_YEAR_INDX
VEH_YEAR 1Thanks for any help!- Jerry