I need the help of the gurus out here in understanding how this execution plan is changing :
For the following query :
this is the explain plan :Code:SELECT ais.standard_type_id AS STD_TYPE,
ais.ss_id AS STD_ID,
std.title AS TITLE,
std.description AS DESCRIPTION
FROM mv_assessment_hierarchy mv,
clg_assessment_result ar,
clg_item_result ir,
as_item_standard ais,
CLG_STANDARD std
WHERE mv.ASSESSMENT_LOCATOR = 'M125Xassess-1::AS' and
to_char(ar.completed_date,'YYYY-MM-DD hh24:mi:ss') = '2004-04-30 13:09:59' and
mv.ASSESSMENT_LOCATOR = ar.ASSESSMENT_LOCATOR and
ar.status = 20 and
ar.taker_id = 59 and
ir.ASSESSMENT_RESULT_ID = ar.ASSESSMENT_RESULT_ID and
mv.item_locator = ir.ITEM_LOCATOR and
ir.item_locator = ais.item_locator AND
ais.ss_id = std.ss_id
When I change the query to take away my check on ar.completed_date as below :Code:
Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop
SELECT STATEMENT Optimizer Mode=CHOOSE 1 9
TABLE ACCESS BY INDEX ROWID MV_ASSESSMENT_HIERARCHY 28 868 3
NESTED LOOPS 1 224 9
NESTED LOOPS 1 193 6
NESTED LOOPS 1 77 5
NESTED LOOPS 1 56 4
TABLE ACCESS FULL CLG_ASSESSMENT_RESULT 1 35 2
TABLE ACCESS BY INDEX ROWID CLG_ITEM_RESULT 70 1 K 2
INDEX RANGE SCAN PK_ITEM_RESULT 49 1
INDEX RANGE SCAN AS_ITEM_STANDARD_AK1 20 420 1
TABLE ACCESS BY INDEX ROWID CLG_STANDARD 1 116 1
INDEX UNIQUE SCAN PK_STANDARD 1
INDEX RANGE SCAN MV_ASS_LOCATOR 28 1
here is the explain plan :Code:SELECT ais.standard_type_id AS STD_TYPE,
ais.ss_id AS STD_ID,
std.title AS TITLE,
std.description AS DESCRIPTION
FROM mv_assessment_hierarchy mv,
clg_assessment_result ar,
clg_item_result ir,
as_item_standard ais,
CLG_STANDARD std
WHERE mv.ASSESSMENT_LOCATOR = 'M125Xassess-1::AS' and
mv.ASSESSMENT_LOCATOR = ar.ASSESSMENT_LOCATOR and
ar.status = 20 and
ar.taker_id = 59 and
ir.ASSESSMENT_RESULT_ID = ar.ASSESSMENT_RESULT_ID and
mv.item_locator = ir.ITEM_LOCATOR and
ir.item_locator = ais.item_locator AND
ais.ss_id = std.ss_id
How does the usage of the column COMPLETED_DATE of table CLG_ASSESSMENT_RESULT affect the usage of the PrimaryKey on CLG_STANDARD ? There is no relation or no constraint between them whatsoever...Code:
Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop
SELECT STATEMENT Optimizer Mode=CHOOSE 9 19
HASH JOIN 9 1 K 19
TABLE ACCESS BY INDEX ROWID MV_ASSESSMENT_HIERARCHY 28 868 3
INDEX RANGE SCAN MV_ASS_LOCATOR 28 1
HASH JOIN 76 14 K 15
HASH JOIN 76 5 K 7
TABLE ACCESS BY INDEX ROWID CLG_ITEM_RESULT 70 1 K 2
NESTED LOOPS 25 1 K 4
TABLE ACCESS FULL CLG_ASSESSMENT_RESULT 1 31 2
INDEX RANGE SCAN PK_ITEM_RESULT 49 1
INDEX FAST FULL SCAN AS_ITEM_STANDARD_AK1 979 20 K 2
TABLE ACCESS FULL CLG_STANDARD 48 5 K 7
Thanks.