A situation where I couldn't get rownum > 0 to work, but the materialize hint seems to work
I have an update stmt, and the updated data comes from a subquery. I wanted to materialize the subquery. Couldn't get rownum > 0 to work, but the materialize hint seems to work (after a lot of help from here - </code>
http://dizwell.com/main/component/option,com_smf/Itemid,114/topic,168.0 <code>):
------------------------------------------------------------
-- rownum > 0
------------------------------------------------------------
UPDATE rahul_temp_sr s
SET site_key_qy =
(WITH q1 AS
(SELECT COUNT (DISTINCT (site_key)) qy,
a2s.sr_id
FROM rahul_temp_acct a,
rahul_temp_acct2sr a2s
WHERE a.acct_id = a2s.acct_id
AND ROWNUM >= 0
GROUP BY a2s.sr_id)
SELECT x.qy
FROM q1 x
WHERE x.sr_id = s.sr_id)
--------------------------------------------------------
| Id | Operation | Name |
--------------------------------------------------------
| 0 | UPDATE STATEMENT | |
| 1 | UPDATE | RAHUL_TEMP_SR |
| 2 | TABLE ACCESS FULL | RAHUL_TEMP_SR |
| 3 | VIEW | |
| 4 | SORT GROUP BY | |
| 5 | COUNT | |
| 6 | FILTER | |
| 7 | MERGE JOIN | |
| 8 | SORT JOIN | |
| 9 | TABLE ACCESS FULL| RAHUL_TEMP_ACCT2SR |
| 10 | SORT JOIN | |
| 11 | TABLE ACCESS FULL| RAHUL_TEMP_ACCT |
--------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - filter("X"."SR_ID"=:B1)
6 - filter(ROWNUM>=0)
10 - access("A"."ACCT_ID"="A2S"."ACCT_ID")
filter("A"."ACCT_ID"="A2S"."ACCT_ID")
Note: cpu costing is off
------------------------------------------------------------
-- with materialize hint
------------------------------------------------------------
UPDATE rahul_temp_sr s
SET site_key_qy =
(WITH q1 AS
(SELECT /*+ materialize */
COUNT (DISTINCT (site_key)) qy,
a2s.sr_id
FROM rahul_temp_acct a,
rahul_temp_acct2sr a2s
WHERE a.acct_id = a2s.acct_id
-- AND ROWNUM >= 0
GROUP BY a2s.sr_id)
SELECT x.qy
FROM q1 x
WHERE x.sr_id = s.sr_id)
--------------------------------------------------------------------
| Id | Operation | Name |
--------------------------------------------------------------------
| 0 | UPDATE STATEMENT | |
| 1 | UPDATE | RAHUL_TEMP_SR |
| 2 | TABLE ACCESS FULL | RAHUL_TEMP_SR |
| 4 | TEMP TABLE TRANSFORMATION | |
| 3 | RECURSIVE EXECUTION | SYS_LE_4_0 |
| 0 | INSERT STATEMENT | |
| 1 | LOAD AS SELECT | |
| 2 | SORT GROUP BY | |
| 3 | MERGE JOIN | |
| 4 | SORT JOIN | |
| 5 | TABLE ACCESS FULL | RAHUL_TEMP_ACCT2SR |
| 6 | SORT JOIN | |
| 7 | TABLE ACCESS FULL | RAHUL_TEMP_ACCT |
| 5 | VIEW | |
| 6 | TABLE ACCESS FULL | SYS_TEMP_0FD9D660C_10B3AF26 |
--------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
6 - access("A"."ACCT_ID"="A2S"."ACCT_ID")
filter("A"."ACCT_ID"="A2S"."ACCT_ID")
5 - filter("X"."SR_ID"=:B1)
Note: cpu costing is off