Ok . . . I am already benefiting from the support from this list : - )
I noticed that I was actually ordering my query BY rownum (which doesn't make
much sense . . . and perhaps oracle's optimizer recognized this and ignored the
pseudo column.)
Just to be sure, I change the query and then reran my tests - the results,
however, did not change
New SQL
SELECT
d.ROW_NUMBER,
d.f1,
d.f2,
d.f3,
d.f4,
d.f5
FROM
(
SELECT /*+ FULL(A) PARALLEL(A 6) */
rownum ROW_NUMBER,
A.field1 f1 ,
A.field2 f2,
A.field3 f3,
A.field4 f4,
B.field5 f5
FROM
tableA A,
tableB B
WHERE
B.field6 IN ( 'TOK3', 'TOK4', 'TOK5' )
AND B.field7 LIKE 'A%'
AND B.field8 IN ('TOK1', 'TOK2')
AND B.fkfield1 = A.field1
ORDER BY
2, 3, 4, 5, 6
) d
WHERE
d.row_number < 2020000
AND d.row_number >= 1000000
Here is a summary of the test results (I have a test harness which uses ssh to
run the exact same tests on more than one host).
INPUT: ( ( HOSTNAME = sandbox ) ( RANGE = 2000000 0 ) ) OUTPUT: (
ORACLE_ERROR_COUNT = 2 )
INPUT: ( ( HOSTNAME = prod ) ( RANGE = 2000000 0 ) ) OUTPUT: (
ORACLE_ERROR_COUNT = 0 )
INPUT: ( ( HOSTNAME = sandbox ) ( RANGE = 1000000 0 ) ) OUTPUT: (
ORACLE_ERROR_COUNT = 0 )
INPUT: ( ( HOSTNAME = prod ) ( RANGE = 1000000 0 ) ) OUTPUT: (
ORACLE_ERROR_COUNT = 0 )
INPUT: ( ( HOSTNAME = sandbox ) ( RANGE = 2000000 1000000 ) ) OUTPUT: (
ORACLE_ERROR_COUNT = 0 )
INPUT: ( ( HOSTNAME = prod ) ( RANGE = 2000000 1000000 ) ) OUTPUT: (
ORACLE_ERROR_COUNT = 0 )
INPUT: ( ( HOSTNAME = sandbox ) ( RANGE = 2020000 1000000 ) ) OUTPUT: (
ORACLE_ERROR_COUNT = 0 )
INPUT: ( ( HOSTNAME = prod ) ( RANGE = 2020000 1000000 ) ) OUTPUT: (
ORACLE_ERROR_COUNT = 0 )
INPUT: ( ( HOSTNAME = sandbox ) ( RANGE = 2030000 1000000 ) ) OUTPUT: (
ORACLE_ERROR_COUNT = 2 )
INPUT: ( ( HOSTNAME = prod ) ( RANGE = 2030000 1000000 ) ) OUTPUT: (
ORACLE_ERROR_COUNT = 0 )