Chris: The explain plans are the same for 8i and 9i. What I do not have is a full-up trace for 8i. Here's 8i: Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=RULE (Cost=4 Card=4 Bytes=228) 1 0 CONCATENATION 2 1 INDEX (RANGE SCAN) OF 'PK_WOD' (UNIQUE) (Cost=4 Card=2 Bytes=114) 3 1 INDEX (RANGE SCAN) OF 'PK_WOD' (UNIQUE) (Cost=4 Card=2 Bytes=114) here's 9i: ------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| ------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 4 | 228 | 4 (50)| | 1 | CONCATENATION | | | | | |* 2 | INDEX RANGE SCAN | PK_WOD | 2 | 114 | 4 (0)| |* 3 | INDEX RANGE SCAN | PK_WOD | 2 | 114 | 4 (0)| ------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 2 - access("WOD"."WO_KEY"='099999126CLSS000000012004112809990099' AND "WOD"."XRF_KEY">='7003549682---01') filter("WOD"."XRF_KEY">='7003549682---01') 3 - access("WOD"."WO_KEY">'099999126CLSS000000012004112809990099') filter("WOD"."WO_KEY">'099999126CLSS000000012004112809990099' AND (LNNVL("WOD"."WO_KEY"='099999126CLSS000000012004112809990099') OR LNNVL("WOD"."XRF_KEY">='7003549682---01'))) 20 rows selected. -- //www.freelists.org/webpage/oracle-l