Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> optimizer and bind variables
i have some trouble with an exec plan the optimizer generates when i use a
bind variable (via jdbc on a ora 8.1)
the plain stmt is fast, the prepared one is very slow coz of another exec plan
the smts only differ in a single column:
instead of a1.c9 = to_date('1990-10-23', 'YYYY-MM-DD')) the prep. stmt uses: a1.c9 = :1
here are the traces
what's going on???
using no bind vars:
select a0.resubmissionTime ,a0.objectType ,a0.oid ,a0.state
,a0.lockDateTime
,a0.targetId ,a0.lockUser ,a0.path ,a0.showContent ,a1.c9 ,a1.c8 ,a0.oid
as
oid_,a0.indexdata as indexdata_,a0.indexclassid as indexclassid_,
a0.objecttype as objecttype
from
ix_ds2 a1, indexedobject a0 where a0.path like '/fa62/%' and ( (
a0.objectType in ( 10, 23 ) ) and a1.c9 = to_date('1990-10-23',
'YYYY-MM-DD')) and not exists(select a_.id from ace a_ where a_.aclid=
a0.aclid and a_.m_read>0 and a_.grantee in( 'grantee2b', 'grantee29',
'grantee2a', 'grantee2c')) and exists(select a_.id from ace a_ where
a_.aclid=a0.aclid and a_.m_read=0 and a_.grantee in( 'grantee2b',
'grantee29', 'grantee2a', 'grantee2c')) and a0.indexdata=a1.id(+)
call count cpu elapsed disk query current
rows
------- ------ -------- ---------- ---------- ---------- ---------- ------
Misses in library cache during parse: 1
Optimizer goal: FIRST_ROWS
Parsing user id: 127 (CS4007)
Rows Row Source Operation
------- --------------------------------------------------- 1 FILTER 2 NESTED LOOPS 2 TABLE ACCESS BY INDEX ROWID IX_DS2 2 INDEX RANGE SCAN (object id 31114) 2 TABLE ACCESS BY INDEX ROWID INDEXEDOBJECT 2 INDEX RANGE SCAN (object id 31063) 1 TABLE ACCESS BY INDEX ROWID ACE 1 INDEX RANGE SCAN (object id 31053) 1 TABLE ACCESS BY INDEX ROWID ACE 5 INDEX RANGE SCAN (object id 31053) Rows Execution Plan ------- --------------------------------------------------- 0 SELECT STATEMENT GOAL: FIRST_ROWS 1 FILTER 2 NESTED LOOPS 2 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'IX_DS2' 2 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'XIFEXTRA13IX_DS2' (NON-UNIQUE) 2 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'INDEXEDOBJECT' 2 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'XIF18INDEXEDOBJECT' (NON-UNIQUE) 1 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'ACE' 5 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'ACLINDEXACE' (NON-UNIQUE) 1 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'ACE' 1 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'ACLINDEXACE' (NON-UNIQUE)
using one bind var on a1.c9:
select a0.resubmissionTime ,a0.objectType ,a0.oid ,a0.state
,a0.lockDateTime
,a0.targetId ,a0.lockUser ,a0.path ,a0.showContent ,a1.c9 ,a1.c8 ,a0.oid
as
oid_,a0.indexdata as indexdata_,a0.indexclassid as indexclassid_,
a0.objecttype as objecttype
from
ix_ds2 a1, indexedobject a0 where a0.path like '/fa62/%' and ( (
a0.objectType in ( 10, 23 ) ) and a1.c9 = :1 ) and not exists(select
a_.id
from ace a_ where a_.aclid=a0.aclid and a_.m_read>0 and a_.grantee in(
'grantee2b', 'grantee29', 'grantee2a', 'grantee2c')) and exists(select
a_.id from ace a_ where a_.aclid=a0.aclid and a_.m_read=0 and a_.grantee
in( 'grantee2b', 'grantee29', 'grantee2a', 'grantee2c')) and a0.indexdata=
a1.id(+)
call count cpu elapsed disk query current
rows
------- ------ -------- ---------- ---------- ---------- ---------- ------
Misses in library cache during parse: 1
Optimizer goal: FIRST_ROWS
Parsing user id: 127 (CS4007)
Rows Row Source Operation
------- --------------------------------------------------- 1 FILTER 2 NESTED LOOPS 5110347 TABLE ACCESS BY INDEX ROWID INDEXEDOBJECT 5166682 INDEX RANGE SCAN (object id 31178) 5110347 TABLE ACCESS BY INDEX ROWID IX_DS2 10220692 INDEX RANGE SCAN (object id 31114) 1 TABLE ACCESS BY INDEX ROWID ACE 1 INDEX RANGE SCAN (object id 31053) 1 TABLE ACCESS BY INDEX ROWID ACE 5 INDEX RANGE SCAN (object id 31053) Rows Execution Plan ------- --------------------------------------------------- 0 SELECT STATEMENT GOAL: FIRST_ROWS 1 FILTER 2 NESTED LOOPS 5110347 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'INDEXEDOBJECT' 5166682 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'XIE3INDEXEDOBJECT' (NON-UNIQUE) 5110347 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'IX_DS2' 10220692 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'XIFEXTRA13IX_DS2' (NON-UNIQUE) 1 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'ACE' 5 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'ACLINDEXACE' (NON-UNIQUE) 1 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'ACE' 1 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'ACLINDEXACE' (NON-UNIQUE)Received on Tue Mar 26 2002 - 11:31:47 CST