Hi Gurus,
I'm facing a weird problem. I'm running a
same query on windows as well as on Solaris both having Oracle 8.0.5
database using CBO optimizer. The Query runs fine on Windows (takes 20-30
Secs) while the same hangs on Solaris and takes 4-6 hrs to return the
results. Both the databases have approx same number of rows and
indexes.
The Query is :
SELECT COUNT(*)
FROM
mam_assets a, mam_asset_attr_domain_values dmv65549
WHERE a."ID" = dmv65549.asset_id
AND
a."ID" IN (SELECT
dmv3.asset_id
FROM mam_asset_attr_domain_values
dmv3
WHERE dmv3.domain_value_id =
71
AND dmv3.asset_attribute_xid =
3
AND dmv3.domain_xid = 7)
AND a."ID" IN
(SELECT
dmv3.asset_id
FROM mam_asset_attr_domain_values
dmv3
WHERE dmv3.domain_value_id =
71
AND dmv3.asset_attribute_xid =
3
AND dmv3.domain_xid = 7)
Explain Plan on Solaris
16 |
|
SELECT
STATEMENT |
15 |
|
SORT
(AGGREGATE) |
10 |
|
MERGE JOIN
(CARTESIAN) |
2 |
|
TABLE ACCESS (BY INDEX ROWID),
MAM_ASSET_ATTR_DOMAIN_VALUES (GMASTER) |
1 |
|
INDEX (RANGE SCAN),
ATRVALDOM_DOMVAL_FK_I (GMASTER) |
6 |
|
TABLE ACCESS (BY INDEX ROWID),
MAM_ASSET_ATTR_DOMAIN_VALUES (GMASTER) |
5 |
|
INDEX (RANGE SCAN),
ATRVALDOM_DOMVAL_FK_I (GMASTER) |
11 |
|
INDEX (UNIQUE SCAN), AST_PK
(GMASTER) |
13 |
|
INDEX (RANGE SCAN),
ATRVALDOM_AST_FK_I (GMASTER) |
Explain Plan on Windows
15 |
|
SELECT
STATEMENT |
14 |
|
SORT
(AGGREGATE) |
2 |
|
TABLE ACCESS (BY INDEX ROWID),
MAM_ASSET_ATTR_DOMAIN_VALUES (QUARKDMS) |
1 |
|
INDEX (RANGE SCAN),
ATRVALDOM_DOMVAL_FK_I (QUARKDMS) |
6 |
|
TABLE ACCESS (BY INDEX ROWID),
MAM_ASSET_ATTR_DOMAIN_VALUES (QUARKDMS) |
5 |
|
INDEX (RANGE SCAN),
ATRVALDOM_DOMVAL_FK_I (QUARKDMS) |
9 |
|
INDEX (UNIQUE SCAN), AST_PK
(QUARKDMS) |
12 |
|
INDEX (RANGE SCAN),
ATRVALDOM_AST_FK_I (QUARKDMS) |
As u can clearly see that on Solaris the
Oracle does a Merge Join (Cartesian) which is very expensive and hence takes
a lot of time.
Please help me understand this and provide
any solution if possible.
Thanks to One and all
Best Regards
Munish
Bajaj