| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> Re: Query gives incorrect results
Jonathan,
Looking at the humungous explain plan, I'm not sure if index range (min/max) is coming into play. It does appear to be something like that (see filter plans).
The explain plan looks like this (sorry .. its a lot of text .. and it might wrap):
SQL> exec dbms_utility.analyze_schema('SYS',method=>'COMPUTE');
PL/SQL procedure successfully completed.
SQL> explain plan for
2 SELECT COUNT (*)
3 FROM dba_indexes i, dba_ind_columns ic, dba_tab_columns c
4 WHERE i.table_owner = 'SYS' 5 AND ic.index_name = i.index_name 6 AND ic.table_name = i.table_name 7 AND ic.table_owner = i.table_owner 8 AND ic.column_position = 9 (SELECT MIN (ic2.column_position) 10 FROM dba_ind_columns ic2 11 WHERE ic2.index_name = ic.index_name 12 AND ic2.table_name = ic.table_name 13 AND ic2.table_owner = ic.table_owner) 14 AND c.table_name = ic.table_name 15 AND c.owner = ic.table_owner 16 AND c.column_name = ic.column_name 17 AND c.data_type = 'VARCHAR2'
Explained.
SQL> select * from table(dbms_xplan.display);
|* 3 | FILTER | | | | |
| 4 | SORT GROUP BY | | 1 | 684 | 198 |
| 5 | NESTED LOOPS | | 1 | 684 | 192 |
| 6 | NESTED LOOPS OUTER | | 1 | 681 | 191 |
| 7 | NESTED LOOPS | | 1 | 675 | 191 |
| 8 | NESTED LOOPS | | 1 | 668 | 191 |
| 9 | NESTED LOOPS | | 1 | 660 | 190 |
| 10 | NESTED LOOPS | | 1 | 636 | 189 |
| 11 | NESTED LOOPS | | 1 | 622 | 188 |
| 12 | NESTED LOOPS OUTER | | 1 | 598 | 186 |
| 13 | NESTED LOOPS OUTER | | 1 | 578 | 185 |
| 14 | NESTED LOOPS | | 1 | 532 | 184 |
| 15 | NESTED LOOPS OUTER | | 1 | 522 | 183 |
| 16 | NESTED LOOPS | | 1 | 512 | 182 |
| 17 | NESTED LOOPS OUTER | | 1 | 481 | 181 |
| 18 | NESTED LOOPS | | 1 | 467 | 181 |
| 19 | NESTED LOOPS | | 1 | 441 | 180 |
| 20 | NESTED LOOPS | | 1 | 410 | 178 |
|* 21 | FILTER | | | | |
| 22 | NESTED LOOPS OUTER | | | | |
| 23 | NESTED LOOPS | | 1 | 363 | 176 |
| 24 | NESTED LOOPS | | 1 | 339 | 175 |
| 25 | NESTED LOOPS | | 2 | 648 | 173 |
| 26 | NESTED LOOPS | | 2 | 586 | 171 |
| 27 | NESTED LOOPS OUTER | | 3 | 816 | 168 |
| 28 | NESTED LOOPS OUTER | | 3 | 786 | 165 |
| 29 | NESTED LOOPS OUTER | | 3 | 693 | 159 |
| 30 | NESTED LOOPS OUTER | | 3 | 651 | 156 |
| 31 | NESTED LOOPS | | 3 | 525 | 153 |
|* 32 | HASH JOIN | | 84 | 11844 | 69 |
| 33 | NESTED LOOPS | | 814 | 87912 | 32 |
| 34 | NESTED LOOPS | | 1 | 77 | 4 |
| 35 | NESTED LOOPS | | 1 | 63 | 3 |
| 36 | NESTED LOOPS | | 1 | 42 | 2 |
| 37 | TABLE ACCESS BY INDEX RO| USER$ | 1 | 21 | 1 |
|* 38 | INDEX UNIQUE SCAN | I_USER1 | 40 | | |
| 39 | TABLE ACCESS BY INDEX RO| USER$ | 1 | 21 | 1 |
|* 40 | INDEX UNIQUE SCAN | I_USER1 | 40 | | |
| 41 | TABLE ACCESS BY INDEX ROW| USER$ | 1 | 21 | 1 |
|* 42 | INDEX UNIQUE SCAN | I_USER1 | 40 | | |
| 43 | TABLE ACCESS BY INDEX ROWI| USER$ | 1 | 14 | 1 |
|* 44 | INDEX UNIQUE SCAN | I_USER1 | 40 | | | |* 45 | TABLE ACCESS FULL | OBJ$ | 814 | 25234 | 28 |
| 46 | TABLE ACCESS FULL | OBJ$ | 14647 | 472K| 28 |
|* 47 | TABLE ACCESS CLUSTER | COL$ | 1 | 34 | 1 | |* 48 | INDEX UNIQUE SCAN | I_OBJ# | 100 | | | |* 49 | TABLE ACCESS CLUSTER | COLTYPE$ | 1 | 42 | 1 | |* 50 | INDEX RANGE SCAN | I_HH_OBJ#_INTCOL# | 1 | 14 | 1 | |* 51 | TABLE ACCESS BY INDEX ROWID | OBJ$ | 1 | 31 | 2 | |* 52 | INDEX RANGE SCAN | I_OBJ3 | 23 | | 1 |
| 53 | TABLE ACCESS CLUSTER | USER$ | 1 | 10 | 1 |
|* 54 | INDEX UNIQUE SCAN | I_USER# | 1 | | |
| 55 | TABLE ACCESS CLUSTER | ICOL$ | 1 | 21 | 1 |
|* 56 | INDEX UNIQUE SCAN | I_OBJ# | 1 | | |
| 57 | TABLE ACCESS BY INDEX ROWID | OBJ$ | 1 | 31 | 1 |
|* 58 | INDEX UNIQUE SCAN | I_OBJ1 | 1 | | | |* 59 | TABLE ACCESS BY INDEX ROWID | IND$ | 1 | 15 | 1 | |* 60 | INDEX UNIQUE SCAN | I_IND1 | 1 | | | |* 61 | TABLE ACCESS CLUSTER | COL$ | 1 | 24 | 1 | |* 62 | TABLE ACCESS CLUSTER | ATTRCOL$ | 1 | 37 | 1 |
| 63 | TABLE ACCESS CLUSTER | USER$ | 1 | 10 | 1 |
|* 64 | INDEX UNIQUE SCAN | I_USER# | 1 | | |
| 65 | TABLE ACCESS BY INDEX ROWID | OBJ$ | 1 | 31 | 2 |
|* 66 | INDEX RANGE SCAN | I_OBJ2 | 1 | | 1 | |* 67 | TABLE ACCESS CLUSTER | IND$ | 1 | 26 | 1 | |* 68 | INDEX UNIQUE SCAN | I_OBJ# | 100 | | |
| 69 | TABLE ACCESS BY INDEX ROWID | OBJ$ | 1 | 14 | |
|* 70 | INDEX UNIQUE SCAN | I_OBJ1 | 1 | | | |* 71 | TABLE ACCESS BY INDEX ROWID | OBJ$ | 1 | 31 | 1 | |* 72 | INDEX UNIQUE SCAN | I_OBJ1 | 1 | | |
| 73 | TABLE ACCESS CLUSTER | USER$ | 1 | 10 | 1 |
|* 74 | INDEX UNIQUE SCAN | I_USER# | 1 | | |
| 75 | TABLE ACCESS CLUSTER | USER$ | 1 | 10 | 1 |
|* 76 | INDEX UNIQUE SCAN | I_USER# | 1 | | |
| 77 | TABLE ACCESS CLUSTER | SEG$ | 1 | 46 | 1 |
|* 78 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | 1 | | |
| 79 | TABLE ACCESS CLUSTER | TS$ | 1 | 20 | 1 |
|* 80 | INDEX UNIQUE SCAN | I_TS# | 583 | | |
| 81 | TABLE ACCESS BY INDEX ROWID | OBJ$ | 1 | 24 | 2 |
|* 82 | INDEX RANGE SCAN | I_OBJ2 | 1 | | 1 |
| 83 | TABLE ACCESS CLUSTER | ICOL$ | 1 | 14 | 1 |
|* 84 | INDEX UNIQUE SCAN | I_OBJ# | 1 | | | |* 85 | TABLE ACCESS BY INDEX ROWID | OBJ$ | 1 | 24 | 1 | |* 86 | INDEX UNIQUE SCAN | I_OBJ1 | 1 | | | |* 87 | TABLE ACCESS BY INDEX ROWID | IND$ | 1 | 8 | 1 | |* 88 | INDEX UNIQUE SCAN | I_IND1 | 1 | | | |* 89 | INDEX UNIQUE SCAN | I_COL3 | 1 | 7 | | |* 90 | INDEX UNIQUE SCAN | I_ATTRCOL1 | 1 | 6 | |
| 91 | TABLE ACCESS CLUSTER | USER$ | 1 | 3 | 1 |
|* 92 | INDEX UNIQUE SCAN | I_USER# | 1 | | | -------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
3 - filter("IC"."POS#"=MIN("IC"."POS#"))
21 - filter("C"."NAME"=DECODE("AC"."NAME",NULL,"C"."NAME","AC"."NAME"))
32 - access("SYS_ALIAS_6"."NAME"="BASE"."NAME" AND "SYS_ALIAS_6"."OWNER#"="U"."USER#")
38 - access("U"."NAME"='SYS')
40 - access("BO"."NAME"='SYS')
42 - access("IU"."NAME"='SYS')
44 - access("BO"."NAME"='SYS')
45 - filter("BO"."USER#"="BASE"."OWNER#")
47 - filter(DECODE("C"."PROPERTY",0,'NO',DECODE(BITAND("C"."PROPERTY",32),32,'YES','NO'))='NO')
48 - access("SYS_ALIAS_6"."OBJ#"="C"."OBJ#")
49 - filter("C"."OBJ#"="SYS_ALIAS_5"."OBJ#"(+) AND "C"."INTCOL#"="SYS_ALIAS_5"."INTCOL#"(+))
50 - access("C"."OBJ#"="H"."OBJ#"(+) AND "C"."INTCOL#"="H"."INTCOL#"(+))
51 - filter("OT"."TYPE#"(+)=13)
52 - access("SYS_ALIAS_5"."TOID"="OT"."OID$"(+))
54 - access("OT"."OWNER#"="UT"."USER#"(+))
56 - access("IC"."BO#"="BASE"."OBJ#")
58 - access("IC"."OBJ#"="IDX"."OBJ#")
59 - filter("I"."TYPE#"=1 OR "I"."TYPE#"=2 OR "I"."TYPE#"=3 OR "I"."TYPE#"=4 OR "I"."TYPE#"=6 OR "I"."TYPE#"=7
OR "I"."TYPE#"=9)
RE2"))
62 - filter("C"."OBJ#"="AC"."OBJ#"(+) AND "C"."INTCOL#"="AC"."INTCOL#"(+))
64 - access("IO"."USER#"="IDX"."OWNER#")
66 - access("IO"."OWNER#"="IU"."USER#" AND "BASE"."NAME"="IO"."NAME")
67 - filter(BITAND("I"."FLAGS",4096)=0)
68 - access("I"."BO#"="IO"."OBJ#")
70 - access("I"."INDMETHOD#"="ITO"."OBJ#"(+))
71 - filter("IDX"."NAME"="O"."NAME")
72 - access("O"."OBJ#"="I"."OBJ#")
74 - access("ITO"."OWNER#"="ITU"."USER#"(+))
76 - access("U"."USER#"="O"."OWNER#")
78 - access("I"."TS#"="S"."TS#"(+) AND "I"."FILE#"="S"."FILE#"(+) AND "I"."BLOCK#"="S"."BLOCK#"(+))
80 - access("I"."TS#"="TS"."TS#"(+))
82 - access("BO"."USER#"="BASE"."OWNER#" AND "BASE"."NAME"="BASE"."NAME")
84 - access("IC"."BO#"="BASE"."OBJ#")
85 - filter("IDX"."NAME"="IDX"."NAME")
86 - access("IC"."OBJ#"="IDX"."OBJ#")
87 - filter("I"."TYPE#"=1 OR "I"."TYPE#"=2 OR "I"."TYPE#"=3 OR "I"."TYPE#"=4 OR "I"."TYPE#"=6 OR "I"."TYPE#"=7
OR "I"."TYPE#"=9)
RE2"))
90 - access("C"."OBJ#"="AC"."OBJ#"(+) AND "C"."INTCOL#"="AC"."INTCOL#"(+))
92 - access("IO"."USER#"="IDX"."OWNER#")
Note: cpu costing is off
149 rows selected.
SQL> SELECT COUNT (*)
2 FROM dba_indexes i, dba_ind_columns ic, dba_tab_columns c
3 WHERE i.table_owner = 'SYS'
4 AND ic.index_name = i.index_name
5 AND ic.table_name = i.table_name
6 AND ic.table_owner = i.table_owner
7 AND ic.column_position =
8 (SELECT MIN (ic2.column_position)
9 FROM dba_ind_columns ic2
10 WHERE ic2.index_name = ic.index_name
11 AND ic2.table_name = ic.table_name
12 AND ic2.table_owner = ic.table_owner)
13 AND c.table_name = ic.table_name
14 AND c.owner = ic.table_owner
15 AND c.column_name = ic.column_name
16 AND c.data_type = 'VARCHAR2'
17 /
313 <==========================================
SQL> exec dbms_stats.delete_schema_stats('SYS');
PL/SQL procedure successfully completed.
SQL> truncate table plan_table;
Table truncated.
SQL> explain plan for
2 SELECT COUNT (*)
3 FROM dba_indexes i, dba_ind_columns ic, dba_tab_columns c
4 WHERE i.table_owner = 'SYS' 5 AND ic.index_name = i.index_name 6 AND ic.table_name = i.table_name 7 AND ic.table_owner = i.table_owner 8 AND ic.column_position = 9 (SELECT MIN (ic2.column_position) 10 FROM dba_ind_columns ic2 11 WHERE ic2.index_name = ic.index_name 12 AND ic2.table_name = ic.table_name 13 AND ic2.table_owner = ic.table_owner) 14 AND c.table_name = ic.table_name 15 AND c.owner = ic.table_owner 16 AND c.column_name = ic.column_name 17 AND c.data_type = 'VARCHAR2'
Explained.
SQL> select * from table(dbms_xplan.display);
|* 2 | FILTER | | | | |
| 3 | NESTED LOOPS OUTER | | | | |
| 4 | NESTED LOOPS OUTER | | | | |
| 5 | NESTED LOOPS | | | | |
| 6 | NESTED LOOPS OUTER | | | | |
| 7 | NESTED LOOPS | | | | |
| 8 | NESTED LOOPS OUTER | | | | |
| 9 | NESTED LOOPS | | | | |
| 10 | NESTED LOOPS | | | | |
| 11 | NESTED LOOPS | | | | |
|* 12 | FILTER | | | | |
| 13 | NESTED LOOPS OUTER | | | | |
| 14 | NESTED LOOPS | | | | |
| 15 | NESTED LOOPS | | | | |
| 16 | NESTED LOOPS | | | | |
| 17 | NESTED LOOPS | | | | |
| 18 | NESTED LOOPS | | | | |
| 19 | NESTED LOOPS OUTER | | | | |
| 20 | NESTED LOOPS OUTER | | | | |
| 21 | NESTED LOOPS OUTER | | | | |
| 22 | NESTED LOOPS OUTER | | | | |
| 23 | NESTED LOOPS | | | | |
| 24 | NESTED LOOPS | | | | |
| 25 | NESTED LOOPS | | | | |
| 26 | NESTED LOOPS | | | | |
| 27 | TABLE ACCESS BY INDEX ROWID| USER$ | | | |
|* 28 | INDEX UNIQUE SCAN | I_USER1 | | | |
| 29 | TABLE ACCESS BY INDEX ROWID| USER$ | | | |
|* 30 | INDEX UNIQUE SCAN | I_USER1 | | | |
| 31 | TABLE ACCESS BY INDEX ROWID | USER$ | | | |
|* 32 | INDEX UNIQUE SCAN | I_USER1 | | | |
| 33 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | |
|* 34 | INDEX RANGE SCAN | I_OBJ2 | | | | |* 35 | TABLE ACCESS CLUSTER | COL$ | | | | |* 36 | INDEX UNIQUE SCAN | I_OBJ# | | | | |* 37 | TABLE ACCESS CLUSTER | COLTYPE$ | | | | |* 38 | INDEX RANGE SCAN | I_HH_OBJ#_INTCOL# | | | | |* 39 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | | |* 40 | INDEX RANGE SCAN | I_OBJ3 | | | |
| 41 | TABLE ACCESS CLUSTER | USER$ | | | |
|* 42 | INDEX UNIQUE SCAN | I_USER# | | | |
| 43 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | |
|* 44 | INDEX RANGE SCAN | I_OBJ2 | | | |
| 45 | TABLE ACCESS CLUSTER | ICOL$ | | | |
|* 46 | INDEX UNIQUE SCAN | I_OBJ# | | | |
| 47 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | |
|* 48 | INDEX UNIQUE SCAN | I_OBJ1 | | | | |* 49 | TABLE ACCESS BY INDEX ROWID | IND$ | | | | |* 50 | INDEX UNIQUE SCAN | I_IND1 | | | | |* 51 | TABLE ACCESS CLUSTER | COL$ | | | | |* 52 | TABLE ACCESS CLUSTER | ATTRCOL$ | | | |
| 53 | TABLE ACCESS CLUSTER | USER$ | | | |
|* 54 | INDEX UNIQUE SCAN | I_USER# | | | |
| 55 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | |
|* 56 | INDEX RANGE SCAN | I_OBJ2 | | | | |* 57 | TABLE ACCESS CLUSTER | IND$ | | | | |* 58 | INDEX UNIQUE SCAN | I_OBJ# | | | |
| 59 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | |
|* 60 | INDEX UNIQUE SCAN | I_OBJ1 | | | | |* 61 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | | |* 62 | INDEX UNIQUE SCAN | I_OBJ1 | | | |
| 63 | TABLE ACCESS CLUSTER | USER$ | | | |
|* 64 | INDEX UNIQUE SCAN | I_USER# | | | |
| 65 | TABLE ACCESS CLUSTER | USER$ | | | |
|* 66 | INDEX UNIQUE SCAN | I_USER# | | | |
| 67 | TABLE ACCESS CLUSTER | SEG$ | | | |
|* 68 | INDEX UNIQUE SCAN | I_FILE#_BLOCK# | | | |
| 69 | TABLE ACCESS CLUSTER | TS$ | | | |
|* 70 | INDEX UNIQUE SCAN | I_TS# | | | |
| 71 | SORT AGGREGATE | | | | |
| 72 | NESTED LOOPS | | | | |
| 73 | NESTED LOOPS OUTER | | | | |
| 74 | NESTED LOOPS | | | | |
| 75 | NESTED LOOPS | | | | |
| 76 | NESTED LOOPS | | | | |
| 77 | NESTED LOOPS | | | | |
| 78 | NESTED LOOPS | | | | |
| 79 | TABLE ACCESS BY INDEX ROWID | USER$ | | | |
|* 80 | INDEX UNIQUE SCAN | I_USER1 | | | |
| 81 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | |
|* 82 | INDEX RANGE SCAN | I_OBJ2 | | | |
| 83 | TABLE ACCESS CLUSTER | ICOL$ | | | |
|* 84 | INDEX UNIQUE SCAN | I_OBJ# | | | | |* 85 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | | |* 86 | INDEX UNIQUE SCAN | I_OBJ1 | | | | |* 87 | TABLE ACCESS BY INDEX ROWID | IND$ | | | | |* 88 | INDEX UNIQUE SCAN | I_IND1 | | | | |* 89 | TABLE ACCESS CLUSTER | COL$ | | | | |* 90 | TABLE ACCESS CLUSTER | ATTRCOL$ | | | |
| 91 | TABLE ACCESS CLUSTER | USER$ | | | |
|* 92 | INDEX UNIQUE SCAN | I_USER# | | | |
| 93 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | |
|* 94 | INDEX UNIQUE SCAN | I_OBJ1 | | | |
| 95 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | |
|* 96 | INDEX UNIQUE SCAN | I_OBJ1 | | | |
| 97 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | |
|* 98 | INDEX UNIQUE SCAN | I_OBJ1 | | | |
| 99 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | |
|*100 | INDEX UNIQUE SCAN | I_OBJ1 | | | |
| 101 | TABLE ACCESS BY INDEX ROWID | OBJ$ | | | |
|*102 | INDEX UNIQUE SCAN | I_OBJ1 | | | | |*103 | TABLE ACCESS CLUSTER | TAB$ | | | | |*104 | INDEX UNIQUE SCAN | I_OBJ# | | | | ------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
2 - filter("IC"."POS#"= (SELECT /*+ */ MIN("IC"."POS#") FROM "SYS"."ATTRCOL$" "AC","SYS"."IND$"
"I","SYS"."USER$" "BO","SYS"."USER$" "IO","SYS"."ICOL$" "IC","SYS"."OBJ$" "BASE","SYS"."OBJ$"
"IDX","SYS"."COL$" "C" WHERE "IC"."BO#"="C"."OBJ#" AND
"C"."INTCOL#"=DECODE(BITAND("I"."PROPERTY",1024),0,"IC"."INTCOL#","IC"."SPARE2") AND
"IC"."OBJ#"="IDX"."OBJ#" AND "IDX"."NAME"=:B1 AND "BASE"."NAME"=:B2 AND "BO"."USER#"="BASE"."OWNER#" AND
"IC"."BO#"="BASE"."OBJ#" AND "IO"."USER#"="IDX"."OWNER#" AND "BO"."NAME"=:B3 AND "IDX"."OBJ#"="I"."OBJ#"
AND ("I"."TYPE#"=1 OR "I"."TYPE#"=2 OR "I"."TYPE#"=3 OR "I"."TYPE#"=4 OR "I"."TYPE#"=6 OR "I"."TYPE#"=7 OR
"I"."TYPE#"=9) AND "C"."OBJ#"="AC"."OBJ#"(+) AND "C"."INTCOL#"="AC"."INTCOL#"(+)) AND
DECODE("C"."TYPE#",1,DECODE("C"."CHARSETFORM",2,'NVARCHAR2','VARCHAR2'),2,DECODE(TO_CHAR("C"."SCALE"),NULL,D
ECODE(TO_CHAR("C"."PRECISION#"),NULL,'NUMBER','FLOAT'),'NUMBER'),8,'LONG',9,DECODE("C"."CHARSETFORM",2,'NCHA
R VARYING','VARCHAR'),12,'DATE',23,'RAW',24,'LONG RAW',58,NVL2("SYS_ALIAS_8"."SYNOBJ#", (SELECT "O"."NAME"
FROM "OBJ$" "O" WHERE "O"."OBJ#"=:B4),"OT"."NAME"),69,'ROWID',96,DECODE("C"."CHARSETFORM",2,'NCHAR','CHAR'),
105,'MLSLABEL',106,'MLSLABEL',111,NVL2("SYS_ALIAS_8"."SYNOBJ#", (SELECT "O"."NAME" FROM "OBJ$" "O" WHERE
"O"."OBJ#"=:B5),"OT"."NAME"),112,DECODE("C"."CHARSETFORM",2,'NCLOB','CLOB'),113,'BLOB',114,'BFILE',115,'CFIL
E',121,NVL2("SYS_ALIAS_8"."SYNOBJ#", (SELECT "O"."NAME" FROM "OBJ$" "O" WHERE
"O"."OBJ#"=:B6),"OT"."NAME"),122,NVL2("SYS_ALIAS_8"."SYNOBJ#", (SELECT "O"."NAME" FROM "OBJ$" "O" WHERE
"O"."OBJ#"=:B7),"OT"."NAME"),123,NVL2("SYS_ALIAS_8"."SYNOBJ#", (SELECT "O"."NAME" FROM "OBJ$" "O" WHERE
"O"."OBJ#"=:B8),"OT"."NAME"),178,'TIME('||TO_CHAR("C"."SCALE")||')',179,'TIME('||TO_CHAR("C"."SCALE")||')'||
' WITH TIME ZONE',180,'TIMESTAMP('||TO_CHAR("C"."SCALE")||')',181,'TIMESTAMP('||TO_CHAR("C"."SCALE")||')'||'
WITH TIME ZONE',231,'TIMESTAMP('||TO_CHAR("C"."SCALE")||')'||' WITH LOCAL TIME ZONE',182,'INTERVAL
YEAR('||TO_CHAR("C"."PRECISION#")||') TO MONTH',183,'INTERVAL DAY('||TO_CHAR("C"."PRECISION#")||') TO
SECOND('||TO_CHAR("C"."SCALE")||')',208,'UROWID','UNDEFINED')='VARCHAR2' AND ("SYS_ALIAS_9"."TYPE#"=3 OR
"SYS_ALIAS_9"."TYPE#"=4 OR "SYS_ALIAS_9"."TYPE#"=2 AND NOT EXISTS (SELECT 0 FROM "SYS"."TAB$" "T" WHERE
"T"."OBJ#"=:B9 AND (BITAND("T"."PROPERTY",512)=512 OR BITAND("T"."PROPERTY",8192)=8192))))
12 - filter("C"."NAME"=DECODE("AC"."NAME",NULL,"C"."NAME","AC"."NAME"))
28 - access("IU"."NAME"='SYS')
30 - access("SYS_ALIAS_3"."NAME"="IU"."NAME")
32 - access("U"."NAME"="SYS_ALIAS_3"."NAME")
34 - access("SYS_ALIAS_9"."OWNER#"="U"."USER#")
35 - filter(DECODE("C"."PROPERTY",0,'NO',DECODE(BITAND("C"."PROPERTY",32),32,'YES','NO'))='NO')
36 - access("SYS_ALIAS_9"."OBJ#"="C"."OBJ#")
37 - filter("C"."INTCOL#"="SYS_ALIAS_8"."INTCOL#"(+))
38 - access("C"."OBJ#"="H"."OBJ#"(+) AND "C"."INTCOL#"="H"."INTCOL#"(+))
39 - filter("OT"."TYPE#"(+)=13)
40 - access("SYS_ALIAS_8"."TOID"="OT"."OID$"(+))
42 - access("OT"."OWNER#"="UT"."USER#"(+))
44 - access("SYS_ALIAS_3"."USER#"="SYS_ALIAS_2"."OWNER#" AND "SYS_ALIAS_9"."NAME"="SYS_ALIAS_2"."NAME")
46 - access("IC"."BO#"="SYS_ALIAS_2"."OBJ#")
48 - access("IC"."OBJ#"="SYS_ALIAS_1"."OBJ#")
49 - filter("I"."TYPE#"=1 OR "I"."TYPE#"=2 OR "I"."TYPE#"=3 OR "I"."TYPE#"=4 OR "I"."TYPE#"=6 OR
"I"."TYPE#"=7 OR "I"."TYPE#"=9)
50 - access("SYS_ALIAS_1"."OBJ#"="I"."OBJ#")
51 - filter("C"."INTCOL#"=DECODE(BITAND("I"."PROPERTY",1024),0,"IC"."INTCOL#","IC"."SPARE2"))
52 - filter("C"."INTCOL#"="AC"."INTCOL#"(+))
54 - access("IO"."USER#"="SYS_ALIAS_1"."OWNER#")
56 - access("IO"."OWNER#"="IU"."USER#" AND "SYS_ALIAS_2"."NAME"="IO"."NAME")
57 - filter(BITAND("I"."FLAGS",4096)=0)
58 - access("I"."BO#"="IO"."OBJ#")
60 - access("I"."INDMETHOD#"="ITO"."OBJ#"(+))
61 - filter("SYS_ALIAS_1"."NAME"="O"."NAME")
62 - access("O"."OBJ#"="I"."OBJ#")
64 - access("ITO"."OWNER#"="ITU"."USER#"(+))
66 - access("U"."USER#"="O"."OWNER#")
68 - access("I"."TS#"="S"."TS#"(+) AND "I"."FILE#"="S"."FILE#"(+) AND "I"."BLOCK#"="S"."BLOCK#"(+))
70 - access("I"."TS#"="TS"."TS#"(+))
80 - access("BO"."NAME"=:B1)
82 - access("BO"."USER#"="BASE"."OWNER#" AND "BASE"."NAME"=:B1)
84 - access("IC"."BO#"="BASE"."OBJ#")
85 - filter("IDX"."NAME"=:B1)
86 - access("IC"."OBJ#"="IDX"."OBJ#")
87 - filter("I"."TYPE#"=1 OR "I"."TYPE#"=2 OR "I"."TYPE#"=3 OR "I"."TYPE#"=4 OR "I"."TYPE#"=6 OR
"I"."TYPE#"=7 OR "I"."TYPE#"=9)
88 - access("IDX"."OBJ#"="I"."OBJ#")
89 - filter("C"."INTCOL#"=DECODE(BITAND("I"."PROPERTY",1024),0,"IC"."INTCOL#","IC"."SPARE2"))
90 - filter("C"."INTCOL#"="AC"."INTCOL#"(+))
92 - access("IO"."USER#"="IDX"."OWNER#")
94 - access("O"."OBJ#"=:B1)
96 - access("O"."OBJ#"=:B1)
98 - access("O"."OBJ#"=:B1)
100 - access("O"."OBJ#"=:B1)
102 - access("O"."OBJ#"=:B1)
Note: rule based optimization
189 rows selected.
SQL> SELECT COUNT (*)
2 FROM dba_indexes i, dba_ind_columns ic, dba_tab_columns c
3 WHERE i.table_owner = 'SYS'
4 AND ic.index_name = i.index_name
5 AND ic.table_name = i.table_name
6 AND ic.table_owner = i.table_owner
7 AND ic.column_position =
8 (SELECT MIN (ic2.column_position)
9 FROM dba_ind_columns ic2
10 WHERE ic2.index_name = ic.index_name
11 AND ic2.table_name = ic.table_name
12 AND ic2.table_owner = ic.table_owner)
13 AND c.table_name = ic.table_name
14 AND c.owner = ic.table_owner
15 AND c.column_name = ic.column_name
16 AND c.data_type = 'VARCHAR2'
17 /
53 <======================
Anurag
"Jonathan Lewis" <jonathan_at_jlcomp.demon.co.uk> wrote in message news:bbvm8m$5v2$1$8302bc10_at_news.demon.co.uk...
> > Would you check the two execution paths, > and let us know which new-looking feature > appears in the plan that goes wrong. > > It might be > index range (min/max) > > This has a known bug in 9.2 > > -- > Regards > > Jonathan Lewis > http://www.jlcomp.demon.co.uk > > The educated person is not the person > who can answer the questions, but the > person who can question the answers -- T. Schick Jr > > > One-day tutorials: > http://www.jlcomp.demon.co.uk/tutorial.html > > ____Sweden___June 9th - 11th > ____Australia__June 27th (Canberra) > ____Finland__September 22nd - 24th > ____Norway___September 25th - 26th > > > Three-day seminar: > see http://www.jlcomp.demon.co.uk/seminar.html > ____Australia_June 18th - 20th (Perth) > ____Australia_June 23rd - 25th (Melbourne) > ____USA_(CA, TX)_August > ____UK___September > > The Co-operative Oracle Users' FAQ > http://www.jlcomp.demon.co.uk/faq/ind_faq.html > > > "Anurag Varma" <avdbi_at_hotmail.com> wrote in message > news:MBQDa.1550$av3.240_at_news02.roc.ny.frontiernet.net... > > eek ... you are correct. This does happen when you analyze the sys > schema. > > > > Anurag > > > > > > >Received on Mon Jun 09 2003 - 19:09:54 CDT
![]() |
![]() |