Need to tune the below query.
Query below:
I have generated the explain plan for the same and its cost is overall 2089...
But Strange once I have removed the "ORDER SIBLINGS BY RETAILER_NM" from below then its cost is coming overall 40.
Can U suggest me what is the best solution.
SELECT path as Retailer_id, logical_physical_flg, parent_retailer_id, upper(retailer_nm), max_level
FROM (SELECT A.RETAILER_ID,LOGICAL_PHYSICAL_FLG, NULL AS PARENT_RETAILER_ID, B.RETAILER_NM, a.retailer_id path,
(LEVEL+2) AS MAX_LEVEL FROM
RETAILER B, USER_RETAILER_MAP A WHERE USER_ID= 'ALEX.CAYLESS@GMACIO' AND
B.RETAILER_ID=A.RETAILER_ID AND B.STATUS='ACTIVE' AND
A.RETAILER_ID NOT IN (SELECT DISTINCT RETAILER_ID FROM
RETAILER_HIERARCHY START WITH PARENT_RETAILER_ID IN (SELECT RETAILER_ID FROM USER_RETAILER_MAP A
WHERE USER_ID= 'ALEX.CAYLESS@GMACIO' AND MANAGED_BY='Y') CONNECT BY PRIOR RETAILER_ID=PARENT_RETAILER_ID)
AND MANAGED_BY='Y'
UNION
SELECT a.RETAILER_ID, LOGICAL_PHYSICAL_FLG, replace(sys_connect_by_path(decode(level, 1, a.parent_retailer_id), '~'), '~') parent_retailer_id, RETAILER_NM, LPAD(' ', 2*LEVEL-1)||SYS_CONNECT_BY_PATH(B.RETAILER_ID, '/') AS path, LEVEL+3 AS MAX_LEVEL
FROM RETAILER B, RETAILER_HIERARCHY A
WHERE B.RETAILER_ID=A.RETAILER_ID AND UPPER(B.STATUS)='ACTIVE' AND EXISTS
(SELECT RETAILER_ID FROM USER_RETAILER_MAP C WHERE USER_ID = 'ALEX.CAYLESS@GMACIO' AND
B.RETAILER_ID = C.RETAILER_ID AND MANAGED_BY= 'Y')
START WITH PARENT_RETAILER_ID IN (SELECT A.RETAILER_ID FROM
RETAILER B, USER_RETAILER_MAP A WHERE USER_ID= 'ALEX.CAYLESS@GMACIO' AND B.RETAILER_ID=A.RETAILER_ID
AND UPPER(B.STATUS)='ACTIVE' AND A.RETAILER_ID NOT IN (SELECT DISTINCT RETAILER_ID FROM
RETAILER_HIERARCHY START WITH PARENT_RETAILER_ID IN (SELECT RETAILER_ID FROM USER_RETAILER_MAP A
WHERE USER_ID= 'ALEX.CAYLESS@GMACIO' AND MANAGED_BY='Y') CONNECT BY PRIOR RETAILER_ID=PARENT_RETAILER_ID)
AND MANAGED_BY='Y') CONNECT BY PRIOR A.RETAILER_ID=PARENT_RETAILER_ID )
START WITH PARENT_RETAILER_ID IS NULL CONNECT BY PRIOR RETAILER_ID = PARENT_RETAILER_ID
ORDER SIBLINGS BY RETAILER_NM
Explain Plan:
==========================
PLAN_TABLE_OUTPUT
| Id | Operation | Name | Rows | Bytes | Cost |
| 0 | SELECT STATEMENT | | 1352 | 5385K| 2089 |
|* 1 | CONNECT BY WITH FILTERING | | | | |
|* 2 | FILTER | | | | |
| 3 | COUNT | | | | |
| 4 | VIEW | | 1352 | 5385K| 40 |
| 5 | SORT UNIQUE | | 1352 | 84128 | 40 |
| 6 | UNION-ALL | | | | |
|* 7 | HASH JOIN ANTI | | 16 | 1296 | 12 |
|* 8 | HASH JOIN | | 19 | 1406 | 9 |
| 9 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
|* 10 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 2409 | | 1 |
|* 11 | TABLE ACCESS FULL | RETAILER | 1594 | 70136 | 6 |
| 12 | VIEW | VW_NSO_1 | 3 | 21 | 2 |
|* 13 | CONNECT BY WITH FILTERING | | | | |
| 14 | NESTED LOOPS | | | | |
|* 15 | HASH JOIN | | 58 | 2262 | 5 |
| 16 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
|* 17 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
| 18 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
| 19 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
| 20 | NESTED LOOPS | | | | |
| 21 | BUFFER SORT | | 3 | 54 | |
| 22 | CONNECT BY PUMP | | | | |
|* 23 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
|* 24 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|* 25 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|* 26 | FILTER | | | | |
|* 27 | CONNECT BY WITH FILTERING | | | | |
|* 28 | FILTER | | | | |
| 29 | COUNT | | | | |
|* 30 | HASH JOIN | | 1336 | 82832 | 9 |
| 31 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 1336 | 24048 | 2 |
| 32 | TABLE ACCESS FULL | RETAILER | 3188 | 136K| 6 |
| 33 | NESTED LOOPS ANTI | | 1 | 54 | 5 |
| 34 | NESTED LOOPS | | 1 | 47 | 3 |
|* 35 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|* 36 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|* 37 | TABLE ACCESS BY INDEX ROWID | RETAILER | 1 | 17 | 1 |
|* 38 | INDEX UNIQUE SCAN | XPKRETAILER | 100 | | |
|* 39 | VIEW | VW_NSO_3 | 3 | 21 | |
|* 40 | CONNECT BY WITH FILTERING | | | | |
| 41 | NESTED LOOPS | | | | |
|* 42 | HASH JOIN | | 58 | 2262 | 5 |
| 43 | TABLE ACCESS BY INDEX ROWID| USER_RETAILER_MAP | 19 | 570 | 2 |
|* 44 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
| 45 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
| 46 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
| 47 | NESTED LOOPS | | | | |
| 48 | BUFFER SORT | | 3 | 54 | |
| 49 | CONNECT BY PUMP | | | | |
|* 50 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
|* 51 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|* 52 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
| 53 | HASH JOIN | | | | |
| 54 | CONNECT BY PUMP | | | | |
| 55 | COUNT | | | | |
|* 56 | HASH JOIN | | 1336 | 82832 | 9 |
| 57 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 1336 | 24048 | 2 |
| 58 | TABLE ACCESS FULL | RETAILER | 3188 | 136K| 6 |
| 59 | NESTED LOOPS ANTI | | 1 | 54 | 5 |
| 60 | NESTED LOOPS | | 1 | 47 | 3 |
|* 61 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|* 62 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|* 63 | TABLE ACCESS BY INDEX ROWID | RETAILER | 1 | 17 | 1 |
|* 64 | INDEX UNIQUE SCAN | XPKRETAILER | 100 | | |
|* 65 | VIEW | VW_NSO_3 | 3 | 21 | |
|* 66 | CONNECT BY WITH FILTERING | | | | |
| 67 | NESTED LOOPS | | | | |
|* 68 | HASH JOIN | | 58 | 2262 | 5 |
| 69 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
|* 70 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
| 71 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
| 72 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
| 73 | NESTED LOOPS | | | | |
| 74 | BUFFER SORT | | 3 | 54 | |
| 75 | CONNECT BY PUMP | | | | |
|* 76 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
|* 77 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|* 78 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|* 79 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|* 80 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
| 81 | HASH JOIN | | | | |
| 82 | CONNECT BY PUMP | | | | |
| 83 | COUNT | | | | |
| 84 | VIEW | | 1352 | 5385K| 40 |
| 85 | SORT UNIQUE | | 1352 | 84128 | 40 |
| 86 | UNION-ALL | | | | |
|* 87 | HASH JOIN ANTI | | 16 | 1296 | 12 |
|* 88 | HASH JOIN | | 19 | 1406 | 9 |
| 89 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
|* 90 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 2409 | | 1 |
|* 91 | TABLE ACCESS FULL | RETAILER | 1594 | 70136 | 6 |
| 92 | VIEW | VW_NSO_1 | 3 | 21 | 2 |
|* 93 | CONNECT BY WITH FILTERING | | | | |
| 94 | NESTED LOOPS | | | | |
|* 95 | HASH JOIN | | 58 | 2262 | 5 |
| 96 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
|* 97 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
| 98 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
| 99 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
| 100 | NESTED LOOPS | | | | |
| 101 | BUFFER SORT | | 3 | 54 | |
| 102 | CONNECT BY PUMP | | | | |
|*103 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
|*104 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|*105 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|*106 | FILTER | | | | |
|*107 | CONNECT BY WITH FILTERING | | | | |
|*108 | FILTER | | | | |
| 109 | COUNT | | | | |
|*110 | HASH JOIN | | 1336 | 82832 | 9 |
| 111 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 1336 | 24048 | 2 |
| 112 | TABLE ACCESS FULL | RETAILER | 3188 | 136K| 6 |
| 113 | NESTED LOOPS ANTI | | 1 | 54 | 5 |
| 114 | NESTED LOOPS | | 1 | 47 | 3 |
|*115 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|*116 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|*117 | TABLE ACCESS BY INDEX ROWID | RETAILER | 1 | 17 | 1 |
|*118 | INDEX UNIQUE SCAN | XPKRETAILER | 100 | | |
|*119 | VIEW | VW_NSO_3 | 3 | 21 | |
|*120 | CONNECT BY WITH FILTERING | | | | |
| 121 | NESTED LOOPS | | | | |
|*122 | HASH JOIN | | 58 | 2262 | 5 |
| 123 | TABLE ACCESS BY INDEX ROWID| USER_RETAILER_MAP | 19 | 570 | 2 |
|*124 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
| 125 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
| 126 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
| 127 | NESTED LOOPS | | | | |
| 128 | BUFFER SORT | | 3 | 54 | |
| 129 | CONNECT BY PUMP | | | | |
|*130 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
|*131 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|*132 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
| 133 | HASH JOIN | | | | |
| 134 | CONNECT BY PUMP | | | | |
| 135 | COUNT | | | | |
|*136 | HASH JOIN | | 1336 | 82832 | 9 |
| 137 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 1336 | 24048 | 2 |
| 138 | TABLE ACCESS FULL | RETAILER | 3188 | 136K| 6 |
| 139 | NESTED LOOPS ANTI | | 1 | 54 | 5 |
| 140 | NESTED LOOPS | | 1 | 47 | 3 |
|*141 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|*142 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|*143 | TABLE ACCESS BY INDEX ROWID | RETAILER | 1 | 17 | 1 |
|*144 | INDEX UNIQUE SCAN | XPKRETAILER | 100 | | |
|*145 | VIEW | VW_NSO_3 | 3 | 21 | |
|*146 | CONNECT BY WITH FILTERING | | | | |
| 147 | NESTED LOOPS | | | | |
|*148 | HASH JOIN | | 58 | 2262 | 5 |
| 149 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
|*150 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
| 151 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
| 152 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
| 153 | NESTED LOOPS | | | | |
| 154 | BUFFER SORT | | 3 | 54 | |
| 155 | CONNECT BY PUMP | | | | |
|*156 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
|*157 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|*158 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|*159 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|*160 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
Predicate Information (identified by operation id):
1 - filter("from$_subquery$_001"."PARENT_RETAILER_ID" IS NULL)
2 - filter("from$_subquery$_001"."PARENT_RETAILER_ID" IS NULL)
7 - access("A"."RETAILER_ID"="VW_NSO_1"."$nso_col_1")
8 - access("B"."RETAILER_ID"="A"."RETAILER_ID")
10 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
11 - filter("B"."STATUS"='ACTIVE')
13 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A" WHERE "A"."USER_ID"='ALEX.CAYLES
S@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY"='Y'))
15 - access("RETAILER_HIERARCHY"."PARENT_RETAILER_ID"="A"."RETAILER_ID")
17 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
23 - filter("SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL)
24 - filter("A"."MANAGED_BY"='Y')
25 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
26 - filter(UPPER("SYS_ALIAS_1"."STATUS")='ACTIVE' AND EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILE
R_MAP" "C" WHERE "C"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "C"."RETAILER_ID"=:B1 AND "C"
."MANAGED_BY"='Y'))
27 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A","RETAILER" "B", (SELECT /*+ */ "
SYS_ALIAS_1"."RETAILER_ID" "$nso_col_1" FROM "RETAILER_HIERARCHY" "SYS_ALIAS_1" WHERE
"SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL) "VW_NSO_3" WHERE "A"."RETAILER_ID"="VW_NSO_3"
."$nso_col_1" AND "B"."RETAILER_ID"="A"."RETAILER_ID" AND UPPER("B"."STATUS")='ACTIVE'
AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY
"='Y'))
28 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A","RETAILER" "B", (SELECT /*+ */ "
SYS_ALIAS_1"."RETAILER_ID" "$nso_col_1" FROM "RETAILER_HIERARCHY" "SYS_ALIAS_1" WHERE
"SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL) "VW_NSO_3" WHERE "A"."RETAILER_ID"="VW_NSO_3"
."$nso_col_1" AND "B"."RETAILER_ID"="A"."RETAILER_ID" AND UPPER("B"."STATUS")='ACTIVE'
AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY
"='Y'))
30 - access("SYS_ALIAS_1"."RETAILER_ID"="SYS_ALIAS_2"."RETAILER_ID")
35 - filter("A"."MANAGED_BY"='Y')
36 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
37 - filter(UPPER("B"."STATUS")='ACTIVE')
38 - access("B"."RETAILER_ID"="A"."RETAILER_ID")
39 - filter("A"."RETAILER_ID"="VW_NSO_3"."$nso_col_1")
40 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A" WHERE "A"."USER_ID"='ALEX.CAYLES
S@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY"='Y'))
42 - access("RETAILER_HIERARCHY"."PARENT_RETAILER_ID"="A"."RETAILER_ID")
44 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
50 - filter("SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL)
51 - filter("A"."MANAGED_BY"='Y')
52 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
56 - access("SYS_ALIAS_1"."RETAILER_ID"="SYS_ALIAS_2"."RETAILER_ID")
61 - filter("A"."MANAGED_BY"='Y')
62 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
63 - filter(UPPER("B"."STATUS")='ACTIVE')
64 - access("B"."RETAILER_ID"="A"."RETAILER_ID")
65 - filter("A"."RETAILER_ID"="VW_NSO_3"."$nso_col_1")
66 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A" WHERE "A"."USER_ID"='ALEX.CAYLES
S@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY"='Y'))
68 - access("RETAILER_HIERARCHY"."PARENT_RETAILER_ID"="A"."RETAILER_ID")
70 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
76 - filter("SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL)
77 - filter("A"."MANAGED_BY"='Y')
78 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
79 - filter("C"."MANAGED_BY"='Y')
80 - access("C"."RETAILER_ID"=:B1 AND "C"."USER_ID"='ALEX.CAYLESS@GMACIO')
87 - access("A"."RETAILER_ID"="VW_NSO_1"."$nso_col_1")
88 - access("B"."RETAILER_ID"="A"."RETAILER_ID")
90 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
91 - filter("B"."STATUS"='ACTIVE')
93 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A" WHERE "A"."USER_ID"='ALEX.CAYLES
S@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY"='Y'))
95 - access("RETAILER_HIERARCHY"."PARENT_RETAILER_ID"="A"."RETAILER_ID")
97 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
103 - filter("SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL)
104 - filter("A"."MANAGED_BY"='Y')
105 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
106 - filter(UPPER("SYS_ALIAS_1"."STATUS")='ACTIVE' AND EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILE
R_MAP" "C" WHERE "C"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "C"."RETAILER_ID"=:B1 AND "C"
."MANAGED_BY"='Y'))
107 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A","RETAILER" "B", (SELECT /*+ */ "
SYS_ALIAS_1"."RETAILER_ID" "$nso_col_1" FROM "RETAILER_HIERARCHY" "SYS_ALIAS_1" WHERE
"SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL) "VW_NSO_3" WHERE "A"."RETAILER_ID"="VW_NSO_3"
."$nso_col_1" AND "B"."RETAILER_ID"="A"."RETAILER_ID" AND UPPER("B"."STATUS")='ACTIVE'
AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY
"='Y'))
108 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A","RETAILER" "B", (SELECT /*+ */ "
SYS_ALIAS_1"."RETAILER_ID" "$nso_col_1" FROM "RETAILER_HIERARCHY" "SYS_ALIAS_1" WHERE
"SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL) "VW_NSO_3" WHERE "A"."RETAILER_ID"="VW_NSO_3"
."$nso_col_1" AND "B"."RETAILER_ID"="A"."RETAILER_ID" AND UPPER("B"."STATUS")='ACTIVE'
AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY
"='Y'))
110 - access("SYS_ALIAS_1"."RETAILER_ID"="SYS_ALIAS_2"."RETAILER_ID")
115 - filter("A"."MANAGED_BY"='Y')
116 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
117 - filter(UPPER("B"."STATUS")='ACTIVE')
118 - access("B"."RETAILER_ID"="A"."RETAILER_ID")
119 - filter("A"."RETAILER_ID"="VW_NSO_3"."$nso_col_1")
120 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A" WHERE "A"."USER_ID"='ALEX.CAYLES
S@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY"='Y'))
122 - access("RETAILER_HIERARCHY"."PARENT_RETAILER_ID"="A"."RETAILER_ID")
124 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
130 - filter("SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL)
131 - filter("A"."MANAGED_BY"='Y')
132 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
136 - access("SYS_ALIAS_1"."RETAILER_ID"="SYS_ALIAS_2"."RETAILER_ID")
141 - filter("A"."MANAGED_BY"='Y')
142 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
143 - filter(UPPER("B"."STATUS")='ACTIVE')
144 - access("B"."RETAILER_ID"="A"."RETAILER_ID")
145 - filter("A"."RETAILER_ID"="VW_NSO_3"."$nso_col_1")
146 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A" WHERE "A"."USER_ID"='ALEX.CAYLES
S@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY"='Y'))
148 - access("RETAILER_HIERARCHY"."PARENT_RETAILER_ID"="A"."RETAILER_ID")
150 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
156 - filter("SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL)
157 - filter("A"."MANAGED_BY"='Y')
158 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
159 - filter("C"."MANAGED_BY"='Y')
160 - access("C"."RETAILER_ID"=:B1 AND "C"."USER_ID"='ALEX.CAYLESS@GMACIO')
Edited by: user13345267 on Jul 19, 2010 1:56 AM
Please find formatted sql.
SELECT path AS retailer_id,
logical_physical_flg,
parent_retailer_id,
Upper(retailer_nm),
max_level
FROM (SELECT a.retailer_id,
logical_physical_flg,
NULL AS parent_retailer_id,
b.retailer_nm,
a.retailer_id path,
( LEVEL + 2 ) AS max_level
FROM retailer b,
user_retailer_map a
WHERE user_id = 'ALEX.CAYLESS@GMACIO'
AND b.retailer_id = a.retailer_id
AND b.status = 'ACTIVE'
AND a.retailer_id NOT IN (SELECT DISTINCT retailer_id
FROM retailer_hierarchy
START WITH parent_retailer_id IN (
SELECT
retailer_id
FROM
user_retailer_map a
WHERE
user_id = 'ALEX.CAYLESS@GMACIO'
AND managed_by = 'Y')
CONNECT BY PRIOR
retailer_id = parent_retailer_id)
AND managed_by = 'Y'
UNION
SELECT a.retailer_id,
logical_physical_flg,
Replace(Sys_connect_by_path(
Decode(LEVEL, 1, a.parent_retailer_id), '~')
'~')
parent_retailer_id,
retailer_nm,
Lpad(' ', 2 * LEVEL - 1)
||Sys_connect_by_path(b.retailer_id, '/') AS path,
LEVEL + 3 AS max_level
FROM retailer b,
retailer_hierarchy a
WHERE b.retailer_id = a.retailer_id
AND Upper(b.status) = 'ACTIVE'
AND EXISTS (SELECT retailer_id
FROM user_retailer_map c
WHERE user_id = 'ALEX.CAYLESS@GMACIO'
AND b.retailer_id = c.retailer_id
AND managed_by = 'Y')
START WITH parent_retailer_id IN (SELECT a.retailer_id
FROM retailer b,
user_retailer_map a
WHERE user_id = 'ALEX.CAYLESS@GMACIO'
AND
b.retailer_id = a.retailer_id
AND Upper(b.status) = 'ACTIVE'
AND a.retailer_id NOT IN
(SELECT DISTINCT
retailer_id
FROM retailer_hierarchy
START WITH parent_retailer_id IN
SELECT
retailer_id
FROM
user_retailer_map a
WHERE
user_id = 'ALEX.CAYLESS@GMACIO'
AND managed_by = 'Y')
CONNECT BY PRIOR
retailer_id = parent_retailer_id)
AND managed_by = 'Y')
CONNECT BY PRIOR a.retailer_id = parent_retailer_id)
START WITH parent_retailer_id IS NULL
CONNECT BY PRIOR retailer_id = parent_retailer_id
ORDER SIBLINGS BY RETAILER_NM
Execution Plan
====================================
PLAN_TABLE_OUTPUT
| Id | Operation | Name | Rows | Bytes | Cost |
| 0 | SELECT STATEMENT | | 1352 | 5385K| 2089 |
|* 1 | CONNECT BY WITH FILTERING | | | | |
|* 2 | FILTER | | | | |
| 3 | COUNT | | | | |
| 4 | VIEW | | 1352 | 5385K| 40 |
| 5 | SORT UNIQUE | | 1352 | 84128 | 40 |
| 6 | UNION-ALL | | | | |
|* 7 | HASH JOIN ANTI | | 16 | 1296 | 12 |
|* 8 | HASH JOIN | | 19 | 1406 | 9 |
| 9 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
|* 10 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
|* 11 | TABLE ACCESS FULL | RETAILER | 32 | 1408 | 6 |
| 12 | VIEW | VW_NSO_1 | 3 | 21 | 2 |
|* 13 | CONNECT BY WITH FILTERING | | | | |
| 14 | NESTED LOOPS | | | | |
|* 15 | HASH JOIN | | 58 | 2262 | 5 |
| 16 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
|* 17 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
| 18 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
| 19 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
| 20 | NESTED LOOPS | | | | |
| 21 | BUFFER SORT | | 3 | 54 | |
| 22 | CONNECT BY PUMP | | | | |
|* 23 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
|* 24 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|* 25 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|* 26 | FILTER | | | | |
|* 27 | CONNECT BY WITH FILTERING | | | | |
|* 28 | FILTER | | | | |
| 29 | COUNT | | | | |
|* 30 | HASH JOIN | | 1336 | 82832 | 9 |
| 31 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 1336 | 24048 | 2 |
| 32 | TABLE ACCESS FULL | RETAILER | 3188 | 136K| 6 |
| 33 | NESTED LOOPS ANTI | | 1 | 54 | 5 |
| 34 | NESTED LOOPS | | 1 | 47 | 3 |
|* 35 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|* 36 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|* 37 | TABLE ACCESS BY INDEX ROWID | RETAILER | 1 | 17 | 1 |
|* 38 | INDEX UNIQUE SCAN | XPKRETAILER | 100 | | |
|* 39 | VIEW | VW_NSO_3 | 3 | 21 | |
|* 40 | CONNECT BY WITH FILTERING | | | | |
| 41 | NESTED LOOPS | | | | |
|* 42 | HASH JOIN | | 58 | 2262 | 5 |
| 43 | TABLE ACCESS BY INDEX ROWID| USER_RETAILER_MAP | 19 | 570 | 2 |
|* 44 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
| 45 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
| 46 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
| 47 | NESTED LOOPS | | | | |
| 48 | BUFFER SORT | | 3 | 54 | |
| 49 | CONNECT BY PUMP | | | | |
|* 50 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
|* 51 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|* 52 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
| 53 | HASH JOIN | | | | |
| 54 | CONNECT BY PUMP | | | | |
| 55 | COUNT | | | | |
|* 56 | HASH JOIN | | 1336 | 82832 | 9 |
| 57 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 1336 | 24048 | 2 |
| 58 | TABLE ACCESS FULL | RETAILER | 3188 | 136K| 6 |
| 59 | NESTED LOOPS ANTI | | 1 | 54 | 5 |
| 60 | NESTED LOOPS | | 1 | 47 | 3 |
|* 61 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|* 62 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|* 63 | TABLE ACCESS BY INDEX ROWID | RETAILER | 1 | 17 | 1 |
|* 64 | INDEX UNIQUE SCAN | XPKRETAILER | 100 | | |
|* 65 | VIEW | VW_NSO_3 | 3 | 21 | |
|* 66 | CONNECT BY WITH FILTERING | | | | |
| 67 | NESTED LOOPS | | | | |
|* 68 | HASH JOIN | | 58 | 2262 | 5 |
| 69 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
|* 70 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
| 71 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
| 72 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
| 73 | NESTED LOOPS | | | | |
| 74 | BUFFER SORT | | 3 | 54 | |
| 75 | CONNECT BY PUMP | | | | |
|* 76 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
|* 77 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|* 78 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|* 79 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|* 80 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
| 81 | HASH JOIN | | | | |
| 82 | CONNECT BY PUMP | | | | |
| 83 | COUNT | | | | |
| 84 | VIEW | | 1352 | 5385K| 40 |
| 85 | SORT UNIQUE | | 1352 | 84128 | 40 |
| 86 | UNION-ALL | | | | |
|* 87 | HASH JOIN ANTI | | 16 | 1296 | 12 |
|* 88 | HASH JOIN | | 19 | 1406 | 9 |
| 89 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
|* 90 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
|* 91 | TABLE ACCESS FULL | RETAILER | 32 | 1408 | 6 |
| 92 | VIEW | VW_NSO_1 | 3 | 21 | 2 |
|* 93 | CONNECT BY WITH FILTERING | | | | |
| 94 | NESTED LOOPS | | | | |
|* 95 | HASH JOIN | | 58 | 2262 | 5 |
| 96 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
|* 97 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
| 98 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
| 99 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
| 100 | NESTED LOOPS | | | | |
| 101 | BUFFER SORT | | 3 | 54 | |
| 102 | CONNECT BY PUMP | | | | |
|*103 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
|*104 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|*105 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|*106 | FILTER | | | | |
|*107 | CONNECT BY WITH FILTERING | | | | |
|*108 | FILTER | | | | |
| 109 | COUNT | | | | |
|*110 | HASH JOIN | | 1336 | 82832 | 9 |
| 111 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 1336 | 24048 | 2 |
| 112 | TABLE ACCESS FULL | RETAILER | 3188 | 136K| 6 |
| 113 | NESTED LOOPS ANTI | | 1 | 54 | 5 |
| 114 | NESTED LOOPS | | 1 | 47 | 3 |
|*115 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|*116 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|*117 | TABLE ACCESS BY INDEX ROWID | RETAILER | 1 | 17 | 1 |
|*118 | INDEX UNIQUE SCAN | XPKRETAILER | 100 | | |
|*119 | VIEW | VW_NSO_3 | 3 | 21 | |
|*120 | CONNECT BY WITH FILTERING | | | | |
| 121 | NESTED LOOPS | | | | |
|*122 | HASH JOIN | | 58 | 2262 | 5 |
| 123 | TABLE ACCESS BY INDEX ROWID| USER_RETAILER_MAP | 19 | 570 | 2 |
|*124 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
| 125 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
| 126 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
| 127 | NESTED LOOPS | | | | |
| 128 | BUFFER SORT | | 3 | 54 | |
| 129 | CONNECT BY PUMP | | | | |
|*130 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
|*131 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|*132 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
| 133 | HASH JOIN | | | | |
| 134 | CONNECT BY PUMP | | | | |
| 135 | COUNT | | | | |
|*136 | HASH JOIN | | 1336 | 82832 | 9 |
| 137 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 1336 | 24048 | 2 |
| 138 | TABLE ACCESS FULL | RETAILER | 3188 | 136K| 6 |
| 139 | NESTED LOOPS ANTI | | 1 | 54 | 5 |
| 140 | NESTED LOOPS | | 1 | 47 | 3 |
|*141 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|*142 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|*143 | TABLE ACCESS BY INDEX ROWID | RETAILER | 1 | 17 | 1 |
|*144 | INDEX UNIQUE SCAN | XPKRETAILER | 100 | | |
|*145 | VIEW | VW_NSO_3 | 3 | 21 | |
|*146 | CONNECT BY WITH FILTERING | | | | |
| 147 | NESTED LOOPS | | | | |
|*148 | HASH JOIN | | 58 | 2262 | 5 |
| 149 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 19 | 570 | 2 |
|*150 | INDEX RANGE SCAN | INDX_USERID_MNGBY | 19 | | 1 |
| 151 | INDEX FAST FULL SCAN | AX_RET_HIER | 1336 | 12024 | 2 |
| 152 | TABLE ACCESS BY USER ROWID | RETAILER_HIERARCHY | | | |
| 153 | NESTED LOOPS | | | | |
| 154 | BUFFER SORT | | 3 | 54 | |
| 155 | CONNECT BY PUMP | | | | |
|*156 | INDEX FAST FULL SCAN | XPKRETAILER_HIERARCHY | 3 | 54 | 2 |
|*157 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|*158 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
|*159 | TABLE ACCESS BY INDEX ROWID | USER_RETAILER_MAP | 1 | 30 | 2 |
|*160 | INDEX UNIQUE SCAN | XPKGSS_USER_RETAILER_MAP | 45770 | | 1 |
Predicate Information (identified by operation id):
1 - filter("from$_subquery$_001"."PARENT_RETAILER_ID" IS NULL)
2 - filter("from$_subquery$_001"."PARENT_RETAILER_ID" IS NULL)
7 - access("A"."RETAILER_ID"="VW_NSO_1"."$nso_col_1")
8 - access("B"."RETAILER_ID"="A"."RETAILER_ID")
10 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
11 - filter("B"."STATUS"='ACTIVE')
13 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A" WHERE "A"."USER_ID"='ALEX.CAYLES
S@GMACIO' AND "A"."RETAILER_ID"=:B1 AND "A"."MANAGED_BY"='Y'))
15 - access("RETAILER_HIERARCHY"."PARENT_RETAILER_ID"="A"."RETAILER_ID")
17 - access("A"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "A"."MANAGED_BY"='Y')
23 - filter("SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL)
24 - filter("A"."MANAGED_BY"='Y')
25 - access("A"."RETAILER_ID"=:B1 AND "A"."USER_ID"='ALEX.CAYLESS@GMACIO')
26 - filter(UPPER("SYS_ALIAS_1"."STATUS")='ACTIVE' AND EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILE
R_MAP" "C" WHERE "C"."USER_ID"='ALEX.CAYLESS@GMACIO' AND "C"."RETAILER_ID"=:B1 AND "C"
."MANAGED_BY"='Y'))
27 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_RETAILER_MAP" "A","RETAILER" "B", (SELECT /*+ */ "
SYS_ALIAS_1"."RETAILER_ID" "$nso_col_1" FROM "RETAILER_HIERARCHY" "SYS_ALIAS_1" WHERE
"SYS_ALIAS_1"."PARENT_RETAILER_ID"=NULL) "VW_NSO_3" WHERE "A"."RETAILER_ID"="VW_NSO_3"
."$nso_col_1" AND "B"."RETAILER_ID"="A"."RETAILER_ID" AND UPPER("B"."STATUS")='ACTIVE'
Similar Messages
-
Do I need to tune the base query of my materialized view ?
Hi gurus,
We implement materialized view (FAST REFRESH ON COMMIT) on base table used in OLTP system. In fact the MV itself is also queried by the OLTP system itself, interactively.
Currently user complain that after they input transaction, they see that the MV is not refresh as soon as they commit the transaction.
(it takes 5 to 10 minutes before they see the update on the MV)
The query of the MV is attached below, it consists of union all of two queries but actually the real query has 13 queries on a UNION ALL.
The question is :
Do I need to tune the query that forms the MV ?
Does it impact the refresh time of the MV ?
Thank you for your help,
xtanto
SELECT GRNH.DOC_CODE ||' '|| GRNH.GRN_NO, GRNH.GRN_DATE, GRNH.REGS_CODE,
F_Convert_Qty_K(GRND.PRODUCT, GRND.QTY, GRND.UOM) QTY_IN, 0 QTY_OUT, 0 QTY_ADJ, 'N/A'.....
FROM GRN_LOCAL_D GRND
JOIN GRN_LOCAL_H GRNH ON GRNH.GRNH_ID = GRND.GRNH_ID
WHERE GRND.PRODUCT IS NOT NULL AND GRNH.WH_CODE IS NOT NULL
UNION ALL
SELECT GRNH.DOC_CODE ||' '|| GRNH.GRN_NO, GRNH.GRN_DATE, GRNH.REGS_CODE,
F_Convert_Qty_K(GRND.PRODUCT_B, GRND.QTY_B, GRND.UOM_B) QTY_IN, 0 QTY_OUT, 0 QTY_ADJ, 'N/A'...
FROM GRN_LOCAL_D GRND
JOIN GRN_LOCAL_H GRNH ON GRNH.GRNH_ID = GRND.GRNH_ID
WHERE GRND.PRODUCT_B IS NOT NULL AND GRNH.WH_CODE IS NOT NULL
UNION ALL
......Hi Justin & APC,
Are they seeing a 5-10 minute delay in being able to commit their transaction?NO, the commit itself is completed normally, but after that when they go to the page (this is webbased app) that display data from the MV, the newly committed transactionis not there yet. Only after 5-10 minutes we can see the new data.
What does the F_Convert_Qty_K() function do?It is a function that convert the quantity from whatever Unit Of Measurement (UOM) into the smallest UOM. Below is the code.
So the question remains:
why intermittently theere is delay before the new data visible in the MV ?
Thanks you,
xtanto
CREATE OR REPLACE FUNCTION F_Convert_Qty (pProduct VARCHAR2, pQty NUMBER, pUOM VARCHAR2)
RETURN NUMBER
IS
vQtyBase NUMBER(13,5);
BEGIN
SELECT CASE WHEN pUOM = ( SELECT UOM_BASE FROM PRODUCTS WHERE PRODUCT = pProduct)
THEN pQty
ELSE
SELECT ROUND(pQty * Coefficient / Divisor, 5)
FROM (
SELECT Coefficient, Divisor FROM CONVERT_UOM
WHERE PRODUCT = pProduct AND UOM_CONVERT = pUOM
) tmp
END INTO vQtyBase FROM DUAL;
--RETURN (vQtyBase) ;
RETURN ( NVL(vQtyBase,0) ) ;
END F_Convert_Qty;
/ -
Need help on the below query.
Hi All,
I've a query given below..
SELECT W.WONUM,
W.STATUS,
WS.CHANGEDATE,
EH.OLD_RATE
FROM
WORKORDER W,
WOSTATUS WS,
ESTIMATE_HEADER@GQMFOF EH
WHERE WS.CHANGEDATE BETWEEN '01-Oct-2009' AND '1-Nov-2009'
AND W.WONUM = WS.WONUM
AND EH.OLD_RATE = 'N'
AND WS.WOSTATUS = 'CLOSE';
I would like to get All the data which status =closed in the month of Oct for Old rate,
So for this i am writing the query above. But not getting the o/p.
It is giving me that " Table/View doesn't exist.
There 2 schemas MAXIMO,GQMMGR..
DBlinks are GQMFOF,MAXFOFNC..
Can anyone help me while writing the above query...
Regards,
gr.A question was asked in your other thread. But the problem was you dint care to give an answer.
Dont open duplicate post.
I need help on the below problem.. -
Request for tunning the below query
Hi,
Can any one help me on the below query while improving the performance,
SELECT accdet, acceprec, accinvalid, accnetanal, accphy, accvalid,
actlabcost, actlabhrs, actualcontactdate, actualfinish, actualstart,
affecteddate, affectedemail, affectedperson, affectedphone,
alteration, aslaiddwg, assetnum, assetorgid, assetsiteid,
assumptions, basedet, basereq, bicounty, bidplo, bieasting,
bihousename, bihouseno, binorthing, bipobox, bipostcode, biposttown,
bistreet, bisubb as bisupp, boostcomp, boostcompdet, ccemail, cchouseno, ccid,
ccname, cctel1type, cctel2type, cctelephone1, cctelephone2, cdm,
changeby, changedate, CLASS, classstructureid, cocontact, cocounty,
codplo, coeasment, coeasting, cohousename, conorthing, copobox,
commodity, commoditygroup, coneasereq, consent, consents,
copostcode, coposttown, costcon, costreet, cosubb, cpi90,
createworelasset, customerref, custtype, depot, description, durt,
ecvpressuretier, ecvsize, enduserid, engdifficult, exaoq, existin,
existsdq, expid, exshq, externalrecid, extralanddetail, failurecode,
fr1code, fr2code, fuelpovscheme, g17, gbna, glaccount,
globalticketclass, globalticketid, govconf, govener, govenerdet,
govhouse, hasactivity, hasld, historyflag, impact, infill,
infoprovide, inheritstatus, internalpriority, interquote, isglobal,
isknownerror, isknownerrordate, kioskdet, kioskreq, langcode,
latecertdate, leadt, lengthpri, lengthpub, loadtype, LOCATION, m25,
maindesac, mainusage, meterboxty, metercon, meterloc, meterser,
mininforec, mininforeq, mprnno, newaoq, newpid, newsdq, newshq,
np14, nrswa, nsgno, oldquotever, oldticketid, orgid, originsgn,
origrecordclass, origrecordid, origrecorgid, origrecsiteid, owner,
ownergroup, packagesent, paymethod, payterms, permittowork, physub,
pressuretier, privateexc, problemcode, propertiesno, propertytype,
publicexc, purgerel, quotedate, quotetype, quotever, reinforcement,
reinforcementa, reinforcementb, relatedtoglobal, reportdate,
reportedby, reportedemail, reportedphone, reportedpriority,
rowstamp, sc, scj, scoreq, servicerelay, sgnbillcontact,
sgnblkbyfin, sgncusttobill, sgncusttosite, sgndisreasoth,
sgneasment, sgnenhance, sgneow, sgneowreq, sgngqmvalid,
sgninfillcost, sgninfillver, sgninfprojno, sgnisstdchrg,
sgnloadnoenter, sgnmainsreq, sgnmaxaccdate, sgnnoncont, sgnpipesiz,
sgnpurord, sgnqdaysremain, sgnqstd, sgnquotdate, sgnquotval,
sgnreasdis, sgntotalaoq, sgntotalshq, sgnvarreq, sicontact,
sicounty, sidplo, sieasting, sihousename, sihouseno, sinorthing,
sipobox, sipostcode, siposttown, sistreet, sisubb, sitecond, sitegt,
siteid, sitel1, sitel2, siteplpro, sitevisit, solution, sos,
sosrecdate, SOURCE, status, statusdate, subfinal, supervisor,
supplytype, surveycarr, surveydef, surveyreas, surveyreq, surveyret,
surveysent, targetcontactdate, targetfinish, targetstart, TEMPLATE,
templateid, termtype, thirdpartyeas, thirdpartypipe, ticketid,
ticketuid, totalaoq, totalpid, totalsdq, totalshq, traffictime,
typewo, urgency, variat, vendor, customer_enquiry_ref,
quote_version, costs, mains_infill_charge, mtr_housing_kiosk_charge,
mtr_housing_kiosk_base_charge, specialist_reinstatement,
easement_charge, total_quote_ex_vat, vat, total_quote_incl_vat,
design_charge, reinforcement_charge, reinforcement_cost,
connection_allowance, workorder.pscdate, workorder.ascdate,
workorder.fincode, workorder.istask, workorder.status,
workorder.targstartdate, workorder.targcompdate,
workorder.schedfinish, workorder.actfinish, workorder.estdur,
workorder.wonum, workorder.mprn,
workorder.sihousename AS wositehousename,
workorder.sihouseno AS wositehouseno,
workorder.sistreet AS wositestreet,
workorder.sicounty AS wositecounty,
workorder.siposttown AS wositeposttown,
workorder.sipostcode AS wositepostcode, workorder.workorderid
FROM (maximo.sr
INNER JOIN
(maximo.relatedrecord INNER JOIN maximo.workorder
ON relatedrecord.relatedreckey =
(CASE
WHEN workorder.PARENT IS NOT NULL
THEN workorder.PARENT
ELSE workorder.wonum
END
AND relatedrecord.orgid = workorder.orgid
AND relatedrecord.siteid = workorder.siteid
AND relatedrecord.relatedrecclass = 'WORKORDER')
ON sr.ticketid = relatedrecord.recordkey
AND sr.orgid = relatedrecord.orgid
AND sr.siteid = relatedrecord.siteid
AND relatedrecord.CLASS = 'SR')
LEFT JOIN
frozen_quote@gqmfof
ON sr.ticketid = customer_enquiry_ref
AND sr.quotever = quote_version
Regards,
graceCould you please provide more info.
Refer to the following link.
When your query takes too long ...
thanks -
Need help on the below query or Pl-SQL
Hello Every one,
Please let me know if some one can help me out with the below scenario either in pl-sql or sql.
Source Data:
0000253800 0.25 0845A 0900A
0000253800 1 0900A 1000A
0000253800 1 1300P 1400P
0000253800 1 1500P 1600P
0000253800 1 1600P 1700P
Output needed:
0000253800 1.25 0845A 1000A
0000253800 1 1300P 1400P
0000253800 2 1500P 1700P
Thanks in Advance....
Edited by: user12564103 on Dec 11, 2011 5:54 PMHi,
Welcome to the forum!
Depending on your data and your requirements:
WITH got_times AS
SELECT column_1, column_2, column_3, column_4
, TO_DATE ( substr (column_3, 1, 4)
, 'HH24MI'
) AS time_3
, TO_DATE ( SUBSTR (column_4, 1, 4)
, 'HH24MI'
) AS time_4
FROM table_x
, got_grp_id AS
SELECT column_1, column_2, column_3, column_4
, time_3, time_4
, time_4 - SUM (time_4 - time_3) OVER ( PARTITION BY column_1
ORDER BY time_3
) AS grp_id
FROM got_times
SELECT column_1
, SUM (column_2) AS sum_2
, MIN (column_3) KEEP (DENSE_RANK FIRST ORDER BY time_3)
AS min_3
, MAX (column_4) KEEP (DENSE_RANK LAST ORDER BY time_4)
AS max_4
FROM got_grp_id
GROUP BY column_1
, grp_id
ORDER BY column_1
, grp_id
;Whenever you have a problem, please post CREATE TABLE and INSERT statements for your sample data, as well as the results you want from that data. Explain, with specific examples, how you get the results you want from that data.
Always say which version of Oracle you're using. The query above will work in Oracle 9.1 (and higher).
Since this is your first thread, I'll do this for you:
CREATE TABLE table_x
( column_1 NUMBER
, column_2 NUMBER
, column_3 VARCHAR2 (5)
, column_4 VARCHAR2 (5)
INSERT INTO table_x (column_1, column_2, column_3, column_4) VALUES (253800, .25, '0845A', '0900A');
INSERT INTO table_x (column_1, column_2, column_3, column_4) VALUES (253800, 1, '0900A', '1000A');
INSERT INTO table_x (column_1, column_2, column_3, column_4) VALUES (253800, 1, '1300P', '1400P');
INSERT INTO table_x (column_1, column_2, column_3, column_4) VALUES (253800, 1, '1500P', '1600P');
INSERT INTO table_x (column_1, column_2, column_3, column_4) VALUES (253800, 1, '1600P', '1700P');Column_1 identifes a day.
Column_2 is an amount that I need to total.
Column_3 and column_4 are starting and ending times. We can assume that they are all valid times (in 'HH24MI' format, plus a redundant 'A' or 'P') on the same day, column_3 is always less than column_4, and that the range of two rows for the same value of column_1 never overlap. Column_4 of one row may be equal to column_3 of another rows with the same column_1, but it will never be greater.
Each row of the output represent a contiguous group of rows (each ending exactly when the next one begins) with the same column_1, with the common column_1, the total of column_2, and the range of the group.
For example, the first two rows for a single group, because they have the same value for column_1, and one ends exactly when the other begins (at 9:00 AM). This group represents day 253800, from 8:45 AM to 10:00 AM. The totla of column_2 fro this group is .25 + 1 = 1.25.
The next row (from 1:00 PM to 2:00 PM) is a group all by itself, because there is a gap one either side of it separating it from its nearest neighbor on the same day."
Of course, I'm guessing at lots of things.
Edited by: Frank Kulash on Dec 11, 2011 9:44 PM
Changed TO_DATE calls.
Edited by: Frank Kulash on Dec 11, 2011 9:52 PM
Added sample question. -
Hi,
PLease help me to tune the query
select primary_rep,
rep_ssn,
nvl(product_type_desc, 'UNKNOWN') as productName,
ROUND(sum(contributions)) as contribution,
ROUND(sum(withdrawls)) as withdrawls,
ROUND(sum(netflow)) as netflow
from dev.NETFLOW_VIEW_TSS_P
where bd = 'TSS'
and actvtydate between '01-Jan-2011' and '30-Sep-2011'
and rep_ssn IN (select tax_id from broker_view where broker_id = '600468')
group by primary_rep, rep_ssn, nvl(product_type_desc, 'UNKNOWN');
explain plan details below
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop |
| 0 | SELECT STATEMENT | | 79 | 158K| | 74348 (1)| 00:14:53 | | |
| 1 | HASH GROUP BY | | 79 | 158K| | 74348 (1)| 00:14:53 | | |
|* 2 | HASH JOIN | | 79 | 158K| | 74347 (1)| 00:14:53 | | |
| 3 | VIEW | VW_NSO_1 | 1 | 6 | | 18 (17)| 00:00:01 | | |
| 4 | HASH UNIQUE | | 1 | 100 | | 18 (17)| 00:00:01 | | |
| 5 | NESTED LOOPS OUTER | | 1 | 100 | | 17 (12)| 00:00:01 | | |
| 6 | MERGE JOIN CARTESIAN | | 1 | 92 | | 17 (12)| 00:00:01 | | |
| 7 | NESTED LOOPS OUTER | | 1 | 71 | | 15 (14)| 00:00:01 | | |
| 8 | NESTED LOOPS OUTER | | 1 | 67 | | 12 (17)| 00:00:01 | | |
|* 9 | HASH JOIN OUTER | | 1 | 63 | | 10 (20)| 00:00:01 | | |
| 10 | NESTED LOOPS OUTER | | 1 | 56 | | 6 (0)| 00:00:01 | | |
| 11 | NESTED LOOPS OUTER | | 1 | 52 | | 4 (0)| 00:00:01 | | |
| 12 | TABLE ACCESS BY INDEX ROWID | AFFILIATE | 1 | 45 | | 2 (0)| 00:00:01 | | |
|* 13 | INDEX UNIQUE SCAN | AFFILIATE_PK | 1 | | | 1 (0)| 00:00:01 | | |
|* 14 | TABLE ACCESS FULL | PORTAL_BROKER | 1 | 7 | | 2 (0)| 00:00:01 | | |
| 15 | VIEW PUSHED PREDICATE | | 1 | 4 | | 2 (0)| 00:00:01 | | |
| 16 | NESTED LOOPS | | 1 | 28 | | 2 (0)| 00:00:01 | | |
| 17 | NESTED LOOPS | | 1 | 21 | | 2 (0)| 00:00:01 | | |
|* 18 | TABLE ACCESS BY INDEX ROWID | LOCATION_GROUP_TYPE_DESC | 1 | 5 | | 1 (0)| 00:00:01 | | |
|* 19 | INDEX UNIQUE SCAN | LOCATION_GROUP_TYPE_DESC_PK | 1 | | | 0 (0)| 00:00:01 | | |
|* 20 | INDEX RANGE SCAN | LOCATION_GROUP_UK | 1 | 16 | | 1 (0)| 00:00:01 | | |
|* 21 | INDEX UNIQUE SCAN | CONTACT_METHOD_PK | 1 | 7 | | 0 (0)| 00:00:01 | | |
| 22 | VIEW | | 1 | 7 | | 3 (34)| 00:00:01 | | |
| 23 | HASH UNIQUE | | 1 | 11 | | 3 (34)| 00:00:01 | | |
|* 24 | INDEX RANGE SCAN | AFFILIATE_TYPE_PK | 1 | 11 | | 2 (0)| 00:00:01 | | |
| 25 | VIEW PUSHED PREDICATE | | 1 | 4 | | 2 (0)| 00:00:01 | | |
| 26 | NESTED LOOPS | | 1 | 28 | | 2 (0)| 00:00:01 | | |
| 27 | NESTED LOOPS | | 1 | 21 | | 2 (0)| 00:00:01 | | |
|* 28 | TABLE ACCESS BY INDEX ROWID | LOCATION_GROUP_TYPE_DESC | 1 | 5 | | 1 (0)| 00:00:01 | | |
|* 29 | INDEX UNIQUE SCAN | LOCATION_GROUP_TYPE_DESC_PK | 1 | | | 0 (0)| 00:00:01 | | |
|* 30 | INDEX RANGE SCAN | LOCATION_GROUP_UK | 1 | 16 | | 1 (0)| 00:00:01 | | |
|* 31 | INDEX UNIQUE SCAN | CONTACT_METHOD_PK | 1 | 7 | | 0 (0)| 00:00:01 | | |
| 32 | VIEW PUSHED PREDICATE | | 1 | 4 | | 3 (0)| 00:00:01 | | |
| 33 | NESTED LOOPS OUTER | | 1 | 35 | | 3 (0)| 00:00:01 | | |
| 34 | NESTED LOOPS | | 1 | 32 | | 3 (0)| 00:00:01 | | |
| 35 | NESTED LOOPS | | 1 | 22 | | 2 (0)| 00:00:01 | | |
|* 36 | TABLE ACCESS BY INDEX ROWID | LOCATION_GROUP_TYPE_DESC | 1 | 5 | | 1 (0)| 00:00:01 | | |
|* 37 | INDEX UNIQUE SCAN | LOCATION_GROUP_TYPE_DESC_PK | 1 | | | 0 (0)| 00:00:01 | | |
|* 38 | INDEX RANGE SCAN | LOCATION_GROUP_UK | 1 | 17 | | 1 (0)| 00:00:01 | | |
| 39 | TABLE ACCESS BY INDEX ROWID | ADDRESS | 1 | 10 | | 1 (0)| 00:00:01 | | |
|* 40 | INDEX UNIQUE SCAN | ADDRESS_PK | 1 | | | 0 (0)| 00:00:01 | | |
|* 41 | INDEX UNIQUE SCAN | PROV_STDSC_PK | 1 | 3 | | 0 (0)| 00:00:01 | | |
| 42 | BUFFER SORT | | 1 | 21 | | 14 (15)| 00:00:01 | | |
|* 43 | INDEX RANGE SCAN | I_BROKER_BKBRCMB | 1 | 21 | | 2 (0)| 00:00:01 | | |
|* 44 | INDEX UNIQUE SCAN | BROKER_BRANCH_PK | 1 | 8 | | 0 (0)| 00:00:01 | | |
| 45 | VIEW | NETFLOW_VIEW_TSS_P | 391K| 766M| | 74325 (1)| 00:14:52 | | |
| 46 | UNION-ALL | | | | | | | | |
|* 47 | HASH JOIN RIGHT OUTER | | 11645 | 1671K| | 49023 (1)| 00:09:49 | | |
| 48 | VIEW | | 1 | 38 | | 13602 (1)| 00:02:44 | | |
|* 49 | FILTER | | | | | | | | |
| 50 | TABLE ACCESS FULL | SALES_REPORT_REP_MAPPING | 9023 | 326K| | 58 (2)| 00:00:01 | | |
|* 51 | FILTER | | | | | | | | |
| 52 | SORT GROUP BY NOSORT | | 1 | 11 | | 3 (0)| 00:00:01 | | |
| 53 | TABLE ACCESS BY INDEX ROWID | SALES_REPORT_REP_MAPPING | 1 | 11 | | 3 (0)| 00:00:01 | | |
|* 54 | INDEX RANGE SCAN | I_SAL_REP_MAP_REPID | 1 | | | 2 (0)| 00:00:01 | | |
| 55 | NESTED LOOPS | | 11645 | 1239K| | 35420 (1)| 00:07:06 | | |
|* 56 | HASH JOIN RIGHT OUTER | | 11645 | 898K| | 12112 (1)| 00:02:26 | | |
| 57 | INDEX FAST FULL SCAN | I_VENDORS_ACCTLOC | 986 | 3944 | | 2 (0)| 00:00:01 | | |
|* 58 | HASH JOIN RIGHT OUTER | | 11645 | 852K| | 12109 (1)| 00:02:26 | | |
|* 59 | MAT_VIEW ACCESS FULL | SECS_DESC | 26777 | 418K| | 3082 (1)| 00:00:37 | | |
|* 60 | FILTER | | | | | | | | |
|* 61 | HASH JOIN RIGHT OUTER | | 11645 | 670K| | 9026 (1)| 00:01:49 | | |
| 62 | MAT_VIEW ACCESS FULL | ENTRYCODES | 1640 | 11480 | | 8 (0)| 00:00:01 | | |
|* 63 | HASH JOIN | | 34936 | 1774K| | 9017 (1)| 00:01:49 | | |
|* 64 | INDEX FULL SCAN | I_CODE | 30 | 420 | | 1 (0)| 00:00:01 | | |
| 65 | PARTITION RANGE ALL | | 342K| 12M| | 9013 (1)| 00:01:49 | 1 | 20 |
| 66 | TABLE ACCESS BY LOCAL INDEX ROWID| BKPG | 342K| 12M| | 9013 (1)| 00:01:49 | 1 | 20 |
|* 67 | INDEX RANGE SCAN | I_BKPG_ACT_REC_IDX | 342K| | | 1412 (1)| 00:00:17 | 1 | 20 |
| 68 | TABLE ACCESS BY INDEX ROWID | ACCT_CUBE | 1 | 30 | | 2 (0)| 00:00:01 | | |
|* 69 | INDEX UNIQUE SCAN | ACCT_CUBE_PK | 1 | | | 1 (0)| 00:00:01 | | |
|* 70 | HASH JOIN RIGHT OUTER | | 379K| 52M| | 25303 (1)| 00:05:04 | | |
| 71 | VIEW | | 1 | 38 | | 13602 (1)| 00:02:44 | | |
|* 72 | FILTER | | | | | | | | |
| 73 | TABLE ACCESS FULL | SALES_REPORT_REP_MAPPING | 9023 | 326K| | 58 (2)| 00:00:01 | | |
|* 74 | FILTER | | | | | | | | |
| 75 | SORT GROUP BY NOSORT | | 1 | 11 | | 3 (0)| 00:00:01 | | |
| 76 | TABLE ACCESS BY INDEX ROWID | SALES_REPORT_REP_MAPPING | 1 | 11 | | 3 (0)| 00:00:01 | | |
|* 77 | INDEX RANGE SCAN | I_SAL_REP_MAP_REPID | 1 | | | 2 (0)| 00:00:01 | | |
|* 78 | HASH JOIN | | 379K| 39M| 33M| 11696 (2)| 00:02:21 | | |
|* 79 | HASH JOIN | | 379K| 28M| | 3210 (2)| 00:00:39 | | |
|* 80 | INDEX FAST FULL SCAN | I_VENDORS_ACCTLOC | 986 | 3944 | | 2 (0)| 00:00:01 | | |
|* 81 | HASH JOIN | | 379K| 27M| 14M| 3204 (2)| 00:00:39 | | |
| 82 | INDEX FAST FULL SCAN | SECS_DESC_PK | 744K| 6545K| | 457 (3)| 00:00:06 | | |
|* 83 | FILTER | | | | | | | | |
|* 84 | HASH JOIN RIGHT OUTER | | 379K| 24M| | 569 (3)| 00:00:07 | | |
| 85 | MAT_VIEW ACCESS FULL | MFENTRYCODES | 6853 | 61677 | | 15 (0)| 00:00:01 | | |
| 86 | PARTITION RANGE ALL | | 1138K| 62M| | 542 (1)| 00:00:07 | 1 | 15 |
|* 87 | TABLE ACCESS BY LOCAL INDEX ROWID | MFBKPG | 1138K| 62M| | 542 (1)| 00:00:07 | 1 | 15 |
|* 88 | INDEX RANGE SCAN | I_MFBKPGP_ACTDT_ACCT_TST | 904 | | | 107 (0)| 00:00:02 | 1 | 15 |
| 89 | INDEX FAST FULL SCAN | I_ACCT_CUBE_REPID_MKT | 1952K| 52M| | 3096 (2)| 00:00:38 | | |
Predicate Information (identified by operation id):
2 - access("REP_SSN"="$nso_col_1")
9 - access("A"."AFFILIATE_ID"="MGR"."AFFILIATE_ID"(+))
13 - access("A"."AFFILIATE_ID"='600468')
14 - filter("PORTAL_BROKER"."BROKER_ID"(+)='600468')
18 - filter("LT"."ADDRESS_CONTACT_IND"='C')
19 - access("LT"."LOCATION_GROUP_TYPE_CODE"='WF')
20 - access("L"."LOCATION_GROUP_TYPE_CODE"='WF' AND "L"."AFFILIATE_ID"="A"."AFFILIATE_ID")
filter("L"."CONTACT_METHOD_ID" IS NOT NULL)
21 - access("L"."CONTACT_METHOD_ID"="B"."CONTACT_METHOD_ID")
24 - access("AFFILIATE_ID"='600468')
filter("AFFILIATE_TYPE"='BBE' OR "AFFILIATE_TYPE"='BRM' OR "AFFILIATE_TYPE"='ISP')
28 - filter("LT"."ADDRESS_CONTACT_IND"='C')
29 - access("LT"."LOCATION_GROUP_TYPE_CODE"='WT')
30 - access("L"."LOCATION_GROUP_TYPE_CODE"='WT' AND "L"."AFFILIATE_ID"="A"."AFFILIATE_ID")
filter("L"."CONTACT_METHOD_ID" IS NOT NULL)
31 - access("L"."CONTACT_METHOD_ID"="B"."CONTACT_METHOD_ID")
36 - filter("LT"."ADDRESS_CONTACT_IND"='A')
37 - access("LT"."LOCATION_GROUP_TYPE_CODE"='WM')
38 - access("L"."LOCATION_GROUP_TYPE_CODE"='WM' AND "L"."AFFILIATE_ID"="A"."AFFILIATE_ID")
filter("L"."ADDRESS_ID" IS NOT NULL)
40 - access("L"."ADDRESS_ID"="A"."ADDRESS_ID")
41 - access("A"."PROVINCE_STATE_CODE"="S"."PROVINCE_STATE_CODE"(+))
43 - access("B"."BROKER_ID"='600468')
44 - access("B"."BRANCH_ID"="BR"."BRANCH_ID"(+))
47 - access("B"."REPID"="K"."REPID"(+))
49 - filter( EXISTS (SELECT 0 FROM DEV."SALES_REPORT_REP_MAPPING" "SALES_REPORT_REP_MAPPING" WHERE "REPID"=:B1 GROUP BY "REPID" HAVING
SUM(NVL("PCT",100))=100))
51 - filter(SUM(NVL("PCT",100))=100)
54 - access("REPID"=:B1)
56 - access(NVL("V"."VENDOR_CD"(+),'xxx')=NVL("VENDOR_CD",'yyy'))
58 - access("CUSIP"(+)="A"."CUSIP")
59 - filter("COMM_SECTYPE"(+)='MF')
60 - filter(NVL("Z"."PERF_INCLUDE_PORTFOLIO",'xx')='Y')
61 - access("A"."ENTRYCODE"="Z"."ENTRYCODE"(+))
63 - access("CODE_IN"=SUBSTR("A"."ACCT",1,3))
64 - access("CODE_TYPE"='NETFLOW')
filter("CODE_TYPE"='NETFLOW')
67 - access("A"."ACTVTYDATE">=TO_DATE(' 2011-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "A"."ACTVTYDATE"<=TO_DATE(' 2011-09-30
00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
69 - access("B"."ACCOUNTKEY"='11,,,'||"A"."ACCT")
70 - access("A"."REPID"="K"."REPID"(+))
72 - filter( EXISTS (SELECT 0 FROM DEV."SALES_REPORT_REP_MAPPING" "SALES_REPORT_REP_MAPPING" WHERE "REPID"=:B1 GROUP BY "REPID" HAVING
SUM(NVL("PCT",100))=100))
74 - filter(SUM(NVL("PCT",100))=100)
77 - access("REPID"=:B1)
78 - access("A"."ACCOUNTKEY"='20,'||"B"."VENDOR_CD"||','||"B"."FUNDNO"||','||"B"."ACCT")
79 - access("V"."VENDOR_CD"="B"."VENDOR_CD")
80 - filter("V"."VENDOR_CD"<>'HNR' AND "V"."VENDOR_CD"<>'CNL' AND "V"."VENDOR_CD"<>'IRE' AND "V"."VENDOR_CD"<>'WLR' AND
"V"."VENDOR_CD"<>'WLP' AND "V"."VENDOR_CD"<>'PER' AND "V"."VENDOR_CD"<>'BHV')
81 - access("SD"."CUSIP"="B"."CUSIP")
83 - filter(NVL("E"."PERF_INCLUDE_PORTFOLIO",'xx')='Y')
84 - access("B"."ENTRYCODE"="E"."ENTRYCODE"(+))
87 - filter("B"."VENDOR_CD"<>'HNR' AND "B"."VENDOR_CD"<>'CNL' AND "B"."VENDOR_CD"<>'IRE' AND "B"."VENDOR_CD"<>'WLR' AND
"B"."VENDOR_CD"<>'WLP' AND "B"."VENDOR_CD"<>'PER' AND "B"."VENDOR_CD"<>'BHV')
88 - access(SYS_OP_DESCEND("ACTVTYDATE")>=HEXTORAW('8790F6E1FEF8FEFAFF') AND SYS_OP_DESCEND("ACTVTYDATE")<=HEXTORAW('8790FEF8FEF8FEFAFF')
filter(SYS_OP_UNDESCEND(SYS_OP_DESCEND("ACTVTYDATE"))>=TO_DATE(' 2011-01-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
SYS_OP_UNDESCEND(SYS_OP_DESCEND("ACTVTYDATE"))<=TO_DATE(' 2011-09-30 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
158 rows selected.ThanksSo this is a VIEW with I think 18 tables (I may have missed one or two), some of which are referenced more than one. Some of these tables have tens of miilions of rows. What exactly are you expecting from us?
I guess this is a data warehouse or BI query. Sometimes such queries just take an age to run and there's nothing which can be done except result caching. Other times the queries can be tuned, but iit requires way more context and domain knowledge than you have provided.
Please start by reading [url https://forums.oracle.com/forums/thread.jspa?threadID=2174552#9360003]this FAQ. .
Cheers, APC -
What step need to take to tune the below query?
select LPAD(' ', 2*LEVEL-1)||SYS_CONNECT_BY_PATH(USER_ID,'/') AS USER_ID, user_nm USER_NM,LEVEL AS MAX_LEVEL from ( SELECT /*+ use_hash(GS_USER)*/ DISTINCT null PARENT_USER_ID, USER_ID user_id, user_nm FROM GSUSER WHERE GC_DEALER_USER_FLG='G' AND USER_ID IN ( SELECT B.PARENT_USER_ID FROM USER_HIERARCHY B,USER_COUNTRY_MAP A WHERE B.USER_ID=A.USER_ID AND A.COUNTRY_CD = ?)AND USER_ID NOT IN (SELECT B.USER_ID FROM USER_HIERARCHY B,USER_COUNTRY_MAP A WHERE B.USER_ID=A.USER_ID AND A.COUNTRY_CD = ?)AND ROLE_NM = 'GISU' AND UPPER(STATUS) = 'ACTIVE' UNION SELECT /*use_hash(B)*/ NULL as PARENT_USER_ID, B.USER_ID, USER_NM FROM GS_USER B, USER_COUNTRY_MAP A WHERE B.USER_ID=A.USER_ID AND A.COUNTRY_CD =? AND B.GC_DEALER_USER_FLG='G' AND B.ROLE_NM = 'GISU' AND UPPER(B.STATUS) = 'ACTIVE' AND B.USER_ID NOT IN ( SELECT PARENT_USER_ID FROM USER_HIERARCHY) AND B.USER_ID NOT IN ( SELECT USER_ID FROM USER_HIERARCHY) UNION SELECT /*use_hash(B)*/ DISTINCT a.parent_user_id PARENT_USER_ID,a.user_id USER_ID, b.user_nm FROM GS_USER B, USER_HIERARCHY A WHERE B.USER_ID=A.USER_ID AND B.ROLE_NM = 'GISU' AND UPPER(B.STATUS) = 'ACTIVE' AND B.GC_DEALER_USER_FLG ='G' START WITH A.PARENT_USER_ID in ( SELECT distinct a.USER_ID FROM GS_USER a, USER_HIERARCHY b, USER_COUNTRY_MAP c WHERE a.GC_DEALER_USER_FLG='G' AND a.USER_ID = b.parent_user_id AND b.user_id = c.user_id and c.COUNTRY_CD = ? AND a.user_id NOT IN (SELECT B.USER_ID FROM USER_HIERARCHY B,USER_COUNTRY_MAP A WHERE B.USER_ID=A.USER_ID AND A.COUNTRY_CD = c.country_cd ) AND ROLE_NM = 'GISU' AND UPPER(STATUS) = 'ACTIVE' ) CONNECT BY PRIOR A.USER_ID = A.PARENT_USER_ID ) start with parent_user_id is null connect by prior user_id = parent_user_id ORDER SIBLINGS BY UPPER(USER_NM) ASC
Please find below the explain plan for the same and some db parameter details:
NAME TYPE VALUE
filesystemio_options string
object_cache_optimal_size integer 102400
optimizer_dynamic_sampling integer 1
optimizer_features_enable string 9.2.0
optimizer_index_caching integer 0
optimizer_index_cost_adj integer 100
optimizer_max_permutations integer 2000
optimizer_mode string ALL_ROWS
SQL> /
PLAN_TABLE_OUTPUT
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost |
| 0 | SELECT STATEMENT | | 3681 | 373K| | 169 |
|* 1 | CONNECT BY WITH FILTERING | | | | | |
|* 2 | FILTER | | | | | |
| 3 | COUNT | | | | | |
| 4 | VIEW | | 3681 | 373K| | 99 |
| 5 | SORT UNIQUE | | 3681 | 319K| 776K| 99 |
| 6 | UNION-ALL | | | | | |
| 7 | NESTED LOOPS | | 1 | 119 | | 9 |
| 8 | NESTED LOOPS | | 1 | 106 | | 9 |
|* 9 | HASH JOIN ANTI | | 1 | 72 | | 7 |
| 10 | TABLE ACCESS BY INDEX ROWID | GSS_USER | 6 | 330 | | 2 |
|* 11 | INDEX RANGE SCAN | INDX_GSSUSR_FLGROLESTS | 6 | | | 1 |
| 12 | VIEW | VW_NSO_1 | 642 | 10914 | | 4 |
| 13 | NESTED LOOPS | | 642 | 23754 | | 4 |
| 14 | INDEX FAST FULL SCAN | XPKGSS_USER_HIERARCHY | 3679 | 62543 | | 4 |
|* 15 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
| 16 | TABLE ACCESS BY INDEX ROWID | USER_HIERARCHY | 1 | 34 | | 2 |
|* 17 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3 | | | 1 |
|* 18 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 13 | | |
| 19 | NESTED LOOPS ANTI | | 1 | 109 | | 4 |
| 20 | NESTED LOOPS ANTI | | 1 | 92 | | 3 |
| 21 | NESTED LOOPS | | 1 | 75 | | 2 |
| 22 | TABLE ACCESS BY INDEX ROWID | GSS_USER | 6 | 330 | | 2 |
|* 23 | INDEX RANGE SCAN | INDX_GSSUSR_FLGROLESTS | 6 | | | 1 |
|* 24 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
|* 25 | INDEX RANGE SCAN | XPKGSS_USER_HIERARCHY | 3679 | 62543 | | 1 |
|* 26 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3679 | 62543 | | 1 |
|* 27 | FILTER | | | | | |
|* 28 | CONNECT BY WITH FILTERING | | | | | |
|* 29 | FILTER | | | | | |
| 30 | COUNT | | | | | |
|* 31 | HASH JOIN | | 3679 | 319K| | 20 |
| 32 | INDEX FAST FULL SCAN | XPKGSS_USER_HIERARCHY | 3679 | 122K| | 4 |
| 33 | TABLE ACCESS FULL | GSS_USER | 6580 | 353K| | 9 |
| 34 | NESTED LOOPS | | 1 | 94 | | 4 |
| 35 | NESTED LOOPS | | 3 | 222 | | 4 |
|* 36 | TABLE ACCESS BY INDEX ROWID| GSS_USER | 1 | 40 | | 2 |
|* 37 | INDEX UNIQUE SCAN | XPKGSS_USER | 6580 | | | 1 |
| 38 | TABLE ACCESS BY INDEX ROWID| USER_HIERARCHY | 3 | 102 | | 2 |
|* 39 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3 | | | 1 |
|* 40 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
| 41 | NESTED LOOPS | | 1 | 37 | | 2 |
|* 42 | INDEX RANGE SCAN | XPKGSS_USER_HIERARCHY | 1 | 17 | | 2 |
|* 43 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
| 44 | HASH JOIN | | | | | |
| 45 | CONNECT BY PUMP | | | | | |
| 46 | COUNT | | | | | |
|* 47 | HASH JOIN | | 3679 | 319K| | 20 |
| 48 | INDEX FAST FULL SCAN | XPKGSS_USER_HIERARCHY | 3679 | 122K| | 4 |
| 49 | TABLE ACCESS FULL | GSS_USER | 6580 | 353K| | 9 |
| 50 | NESTED LOOPS | | 1 | 94 | | 4 |
| 51 | NESTED LOOPS | | 3 | 222 | | 4 |
|* 52 | TABLE ACCESS BY INDEX ROWID | GSS_USER | 1 | 40 | | 2 |
|* 53 | INDEX UNIQUE SCAN | XPKGSS_USER | 6580 | | | 1 |
| 54 | TABLE ACCESS BY INDEX ROWID | USER_HIERARCHY | 3 | 102 | | 2 |
|* 55 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3 | | | 1 |
|* 56 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
| 57 | NESTED LOOPS | | 1 | 37 | | 2 |
|* 58 | INDEX RANGE SCAN | XPKGSS_USER_HIERARCHY | 1 | 17 | | 2 |
|* 59 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
| 60 | HASH JOIN | | | | | |
| 61 | CONNECT BY PUMP | | | | | |
| 62 | COUNT | | | | | |
| 63 | VIEW | | 3681 | 373K| | 99 |
| 64 | SORT UNIQUE | | 3681 | 319K| 776K| 99 |
| 65 | UNION-ALL | | | | | |
| 66 | NESTED LOOPS | | 1 | 119 | | 9 |
| 67 | NESTED LOOPS | | 1 | 106 | | 9 |
|* 68 | HASH JOIN ANTI | | 1 | 72 | | 7 |
| 69 | TABLE ACCESS BY INDEX ROWID | GSS_USER | 6 | 330 | | 2 |
|* 70 | INDEX RANGE SCAN | INDX_GSSUSR_FLGROLESTS | 6 | | | 1 |
| 71 | VIEW | VW_NSO_1 | 642 | 10914 | | 4 |
| 72 | NESTED LOOPS | | 642 | 23754 | | 4 |
| 73 | INDEX FAST FULL SCAN | XPKGSS_USER_HIERARCHY | 3679 | 62543 | | 4 |
|* 74 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
| 75 | TABLE ACCESS BY INDEX ROWID | USER_HIERARCHY | 1 | 34 | | 2 |
|* 76 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3 | | | 1 |
|* 77 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 13 | | |
| 78 | NESTED LOOPS ANTI | | 1 | 109 | | 4 |
| 79 | NESTED LOOPS ANTI | | 1 | 92 | | 3 |
| 80 | NESTED LOOPS | | 1 | 75 | | 2 |
| 81 | TABLE ACCESS BY INDEX ROWID | GSS_USER | 6 | 330 | | 2 |
|* 82 | INDEX RANGE SCAN | INDX_GSSUSR_FLGROLESTS | 6 | | | 1 |
|* 83 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
|* 84 | INDEX RANGE SCAN | XPKGSS_USER_HIERARCHY | 3679 | 62543 | | 1 |
|* 85 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3679 | 62543 | | 1 |
|* 86 | FILTER | | | | | |
|* 87 | CONNECT BY WITH FILTERING | | | | | |
|* 88 | FILTER | | | | | |
| 89 | COUNT | | | | | |
|* 90 | HASH JOIN | | 3679 | 319K| | 20 |
| 91 | INDEX FAST FULL SCAN | XPKGSS_USER_HIERARCHY | 3679 | 122K| | 4 |
| 92 | TABLE ACCESS FULL | GSS_USER | 6580 | 353K| | 9 |
| 93 | NESTED LOOPS | | 1 | 94 | | 4 |
| 94 | NESTED LOOPS | | 3 | 222 | | 4 |
|* 95 | TABLE ACCESS BY INDEX ROWID| GSS_USER | 1 | 40 | | 2 |
|* 96 | INDEX UNIQUE SCAN | XPKGSS_USER | 6580 | | | 1 |
| 97 | TABLE ACCESS BY INDEX ROWID| USER_HIERARCHY | 3 | 102 | | 2 |
|* 98 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3 | | | 1 |
|* 99 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
| 100 | NESTED LOOPS | | 1 | 37 | | 2 |
|*101 | INDEX RANGE SCAN | XPKGSS_USER_HIERARCHY | 1 | 17 | | 2 |
|*102 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
| 103 | HASH JOIN | | | | | |
| 104 | CONNECT BY PUMP | | | | | |
| 105 | COUNT | | | | | |
|*106 | HASH JOIN | | 3679 | 319K| | 20 |
| 107 | INDEX FAST FULL SCAN | XPKGSS_USER_HIERARCHY | 3679 | 122K| | 4 |
| 108 | TABLE ACCESS FULL | GSS_USER | 6580 | 353K| | 9 |
| 109 | NESTED LOOPS | | 1 | 94 | | 4 |
| 110 | NESTED LOOPS | | 3 | 222 | | 4 |
|*111 | TABLE ACCESS BY INDEX ROWID | GSS_USER | 1 | 40 | | 2 |
|*112 | INDEX UNIQUE SCAN | XPKGSS_USER | 6580 | | | 1 |
| 113 | TABLE ACCESS BY INDEX ROWID | USER_HIERARCHY | 3 | 102 | | 2 |
|*114 | INDEX RANGE SCAN | GSS_USER_HIER_PARENT_USER_ID | 3 | | | 1 |
|*115 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
| 116 | NESTED LOOPS | | 1 | 37 | | 2 |
|*117 | INDEX RANGE SCAN | XPKGSS_USER_HIERARCHY | 1 | 17 | | 2 |
|*118 | INDEX UNIQUE SCAN | SYS_C005426 | 1 | 20 | | |
Predicate Information (identified by operation id):
1 - filter("from$_subquery$_001"."PARENT_USER_ID" IS NULL)
2 - filter("from$_subquery$_001"."PARENT_USER_ID" IS NULL)
9 - access("GSS_USER"."USER_ID"="VW_NSO_1"."$nso_col_1")
11 - access("GSS_USER"."GMAC_DEALER_USER_FLG"='G' AND "GSS_USER"."ROLE_NM"='GISU' AND "GSS_USER"."STATUS"='
ACTIVE')
15 - access("A"."COUNTRY_CD"='AU' AND "B"."USER_ID"="A"."USER_ID")
17 - access("GSS_USER"."USER_ID"="B"."PARENT_USER_ID")
18 - access("A"."COUNTRY_CD"='AU' AND "B"."USER_ID"="A"."USER_ID")
23 - access("B"."GMAC_DEALER_USER_FLG"='G' AND "B"."ROLE_NM"='GISU' AND "B"."STATUS"='ACTIVE')
24 - access("A"."COUNTRY_CD"='AU' AND "B"."USER_ID"="A"."USER_ID")
25 - access("B"."USER_ID"="USER_HIERARCHY"."USER_ID")
26 - access("B"."USER_ID"="USER_HIERARCHY"."PARENT_USER_ID")
27 - filter("B"."ROLE_NM"='GISU' AND "B"."STATUS"='ACTIVE' AND "B"."GMAC_DEALER_USER_FLG"='G')
28 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "SYS_ALIAS_2","USER_HIERARCHY" "B","GSS_USER"
"SYS_ALIAS_1" WHERE "SYS_ALIAS_1"."USER_ID"=:B1 AND "SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AN
D "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."STATUS"='ACTIVE' AND "SYS_ALIAS_1"."USER_ID
"="B"."PARENT_USER_ID" AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID" AND "SYS_ALIAS_2"."COUNTRY_CD"
='AU' AND NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "
B"."USER_ID"=:B2 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B3)))
29 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "SYS_ALIAS_2","USER_HIERARCHY" "B","GSS_USER"
"SYS_ALIAS_1" WHERE "SYS_ALIAS_1"."USER_ID"=:B1 AND "SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AN
D "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."STATUS"='ACTIVE' AND "SYS_ALIAS_1"."USER_ID
"="B"."PARENT_USER_ID" AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID" AND "SYS_ALIAS_2"."COUNTRY_CD"
='AU' AND NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "
B"."USER_ID"=:B2 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B3)))
31 - access("B"."USER_ID"="SYS_ALIAS_1"."USER_ID")
36 - filter("SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AND "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."
STATUS"='ACTIVE')
37 - access("SYS_ALIAS_1"."USER_ID"=:B1)
39 - access("SYS_ALIAS_1"."USER_ID"="B"."PARENT_USER_ID")
40 - access("SYS_ALIAS_2"."COUNTRY_CD"='AU' AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID")
filter( NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "B"."USER_I
D"=:B1 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B2))
42 - access("B"."USER_ID"=:B1)
43 - access("A"."COUNTRY_CD"=:B1 AND "B"."USER_ID"="A"."USER_ID")
47 - access("B"."USER_ID"="SYS_ALIAS_1"."USER_ID")
52 - filter("SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AND "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."
STATUS"='ACTIVE')
53 - access("SYS_ALIAS_1"."USER_ID"=:B1)
55 - access("SYS_ALIAS_1"."USER_ID"="B"."PARENT_USER_ID")
56 - access("SYS_ALIAS_2"."COUNTRY_CD"='AU' AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID")
filter( NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "B"."USER_I
D"=:B1 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B2))
58 - access("B"."USER_ID"=:B1)
59 - access("A"."COUNTRY_CD"=:B1 AND "B"."USER_ID"="A"."USER_ID")
68 - access("GSS_USER"."USER_ID"="VW_NSO_1"."$nso_col_1")
70 - access("GSS_USER"."GMAC_DEALER_USER_FLG"='G' AND "GSS_USER"."ROLE_NM"='GISU' AND "GSS_USER"."STATUS"='
ACTIVE')
74 - access("A"."COUNTRY_CD"='AU' AND "B"."USER_ID"="A"."USER_ID")
76 - access("GSS_USER"."USER_ID"="B"."PARENT_USER_ID")
77 - access("A"."COUNTRY_CD"='AU' AND "B"."USER_ID"="A"."USER_ID")
82 - access("B"."GMAC_DEALER_USER_FLG"='G' AND "B"."ROLE_NM"='GISU' AND "B"."STATUS"='ACTIVE')
83 - access("A"."COUNTRY_CD"='AU' AND "B"."USER_ID"="A"."USER_ID")
84 - access("B"."USER_ID"="USER_HIERARCHY"."USER_ID")
85 - access("B"."USER_ID"="USER_HIERARCHY"."PARENT_USER_ID")
86 - filter("B"."ROLE_NM"='GISU' AND "B"."STATUS"='ACTIVE' AND "B"."GMAC_DEALER_USER_FLG"='G')
87 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "SYS_ALIAS_2","USER_HIERARCHY" "B","GSS_USER"
"SYS_ALIAS_1" WHERE "SYS_ALIAS_1"."USER_ID"=:B1 AND "SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AN
D "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."STATUS"='ACTIVE' AND "SYS_ALIAS_1"."USER_ID
"="B"."PARENT_USER_ID" AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID" AND "SYS_ALIAS_2"."COUNTRY_CD"
='AU' AND NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "
B"."USER_ID"=:B2 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B3)))
88 - filter( EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "SYS_ALIAS_2","USER_HIERARCHY" "B","GSS_USER"
"SYS_ALIAS_1" WHERE "SYS_ALIAS_1"."USER_ID"=:B1 AND "SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AN
D "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."STATUS"='ACTIVE' AND "SYS_ALIAS_1"."USER_ID
"="B"."PARENT_USER_ID" AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID" AND "SYS_ALIAS_2"."COUNTRY_CD"
='AU' AND NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "
B"."USER_ID"=:B2 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B3)))
90 - access("B"."USER_ID"="SYS_ALIAS_1"."USER_ID")
95 - filter("SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AND "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."
STATUS"='ACTIVE')
96 - access("SYS_ALIAS_1"."USER_ID"=:B1)
98 - access("SYS_ALIAS_1"."USER_ID"="B"."PARENT_USER_ID")
99 - access("SYS_ALIAS_2"."COUNTRY_CD"='AU' AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID")
filter( NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "B"."USER_I
D"=:B1 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B2))
101 - access("B"."USER_ID"=:B1)
102 - access("A"."COUNTRY_CD"=:B1 AND "B"."USER_ID"="A"."USER_ID")
106 - access("B"."USER_ID"="SYS_ALIAS_1"."USER_ID")
111 - filter("SYS_ALIAS_1"."GMAC_DEALER_USER_FLG"='G' AND "SYS_ALIAS_1"."ROLE_NM"='GISU' AND "SYS_ALIAS_1"."
STATUS"='ACTIVE')
112 - access("SYS_ALIAS_1"."USER_ID"=:B1)
114 - access("SYS_ALIAS_1"."USER_ID"="B"."PARENT_USER_ID")
115 - access("SYS_ALIAS_2"."COUNTRY_CD"='AU' AND "B"."USER_ID"="SYS_ALIAS_2"."USER_ID")
filter( NOT EXISTS (SELECT /*+ */ 0 FROM "USER_COUNTRY_MAP" "A","USER_HIERARCHY" "B" WHERE "B"."USER_I
D"=:B1 AND "B"."USER_ID"="A"."USER_ID" AND "A"."COUNTRY_CD"=:B2))
117 - access("B"."USER_ID"=:B1)
118 - access("A"."COUNTRY_CD"=:B1 AND "B"."USER_ID"="A"."USER_ID")
Note: cpu costing is off
218 rows selected.
Please give me some tips or clue ,so that I can reduce the more cost for the same.
Thanks in adv. -
Need to tune the hierarchical query
Hi Guys,
Can you guys tune in the possible ways...as this is taking 30-40 sec.. No indexes on this table as of now.
SELECT org_id,
parent_id,
organization,
(SELECT LISTAGG(parent_id, ', ') WITHIN GROUP( ORDER BY org_id)
FROM organization_master where org_id in(SELECT org_id
FROM organization_master
START WITH org_id = a.org_id
CONNECT BY NOCYCLE prior parent_id = org_id))
FROM t_org a
WHERE upper(organization) like upper('%Greater%');
Thanks in advance!
Rgds,
LrkSo this is a VIEW with I think 18 tables (I may have missed one or two), some of which are referenced more than one. Some of these tables have tens of miilions of rows. What exactly are you expecting from us?
I guess this is a data warehouse or BI query. Sometimes such queries just take an age to run and there's nothing which can be done except result caching. Other times the queries can be tuned, but iit requires way more context and domain knowledge than you have provided.
Please start by reading [url https://forums.oracle.com/forums/thread.jspa?threadID=2174552#9360003]this FAQ. .
Cheers, APC -
How to tune the below query?is taking 1min 15 sec to process 16,34,300 reco
SELECT
user_id,
ispeak,
round(sum(DURATION_seconds*convert_duration(pulseunit,ratingunit))/decode(ispeak,0,max(offpeakpulse),max(peakpulse))),
round(sum(download_bytes*convert_bytes(pulseunit,ratingunit))/decode(ispeak,0,max(offpeakpulse),max(peakpulse))),
round(sum(upload_bytes*convert_bytes(pulseunit,ratingunit))/decode(ispeak,0,max(offpeakpulse),max(peakpulse))),
max(packageid),
max(peakrate),
max(offpeakrate),
max(bstplantype),
max(freevalue),
max(peakpulse),
max(offpeakpulse),
max(pulseunit),
max(ratingunit)
FROM aaa_sessions a,subscriber_rate_tab srt
where
a.user_id=srt.externalid
group by user_id,packageid,ispeak
having
trunc(min(start_time_utc)) between min(srt.activedt) and min(srt.inactivedt)
and
trunc(max(end_time_utc)) between min(srt.activedt) and min(srt.inactivedt);Do you have multiprocessor CPU .
if the value is greater then 3 then you can try with parallel processing
select value from v$parameter where name ='cpu_count' ;Try this :-
ALTER SESSION ENABLE PARALLEL QUERY
SELECT /*+ parallel (a) */
user_id,
ispeak,
round(sum(DURATION_seconds*convert_duration(pulseunit,ratingunit))/decode(ispeak,0,max(offpeakpulse),max(peakpulse))),
max(ratingunit),
round(sum(download_bytes*convert_bytes(pulseunit,ratingunit))/decode(ispeak,0,max(offpeakpulse),max(peakpulse))),
max(ratingunit),
round(sum(upload_bytes*convert_bytes(pulseunit,ratingunit))/decode(ispeak,0,max(offpeakpulse),max(peakpulse))),
max(packageid),
max(peakrate),
max(offpeakrate),
max(bstplantype),
max(freevalue),
max(peakpulse),
max(offpeakpulse),
max(pulseunit),
max(ratingunit),
min(start_time_utc) ,
max(end_time_utc),
min(srt.activedt),
min(srt.inactivedt)
FROM aaa_sessions a,subscriber_rate_tab srt
where
a.user_id=srt.externalid(+)
group by user_id,packageid,ispeak
having
trunc(min(start_time_utc)) between min(srt.activedt) and min(srt.inactivedt)
and
trunc(max(end_time_utc)) between min(srt.activedt) and min(srt.inactivedt)Cheers
Nawneet
Edited by: Nawneet_Aswal on Aug 2, 2010 4:48 AM -
Need Help with the below query
Hi All,
I'm working on Oracle HRMS tables which have date tracking facility.
I'm working on Oracle 10G.
I have a table per_all_assignments_f(seeded) which contains the employee related information.
It has normal hours and the assignment_id(primary key) in the table
The data is something like
assignment_id
123 30 01-Jan-2000 31-dec-2009
123 32 01-Jan-2010 31-dec-2012
123
assignment_id
Normal_hours
Effective_start_Date
Effective_end_Date
123
30
01-Jan-2000
31-dec-2009
123
32
01-Jan-2010
31-dec-2012
123
40
01-Jan-20103
40 01-jan-2013 31-dec-4712
Now I'd like to pass the latest date(sysdate) to a function which should give me the
last changed normal hours as on today. In this case 32.
select normal_hours from per_all_assignments_f where
assignment_id=123
and trunc(latest_date) between effective_start_date and effective_end_date
This will give me the latest normal hours of 40 but I want the last changed hours irrespective of how many ever be the changes.
hope I'm clear in specifying my requirement.
Appreciate your time
Thanks,
AJ877722 wrote:
It has normal hours and the assignment_id(primary key) in the table
How PK value is repeating in your sample data!
877722 wrote:
This will give me the latest normal hours of 40 but I want the last changed hours irrespective of how many ever be the changes.
hope I'm clear in specifying my requirement.
Nope. What is "changed hours"? Not able to break your source code! a tough one, I say.
By the way, follow the link shared by Karthick and will be easy to answer for anyone.
Thanks! -
Do i need to tune the redolog?
10g R2 on AIX 5.3L
this is a typical alert file about the redo log file switching of the day.
Mon May 28 01:26:33 2007
Thread 1 advanced to log sequence 24017
Current log# 4 seq# 24017 mem# 0: /u020/apps/oracle/oradata/BAAN/redo04.log
Mon May 28 08:04:13 2007
Thread 1 advanced to log sequence 24018
Current log# 5 seq# 24018 mem# 0: /u020/apps/oracle/oradata/BAAN/redo05.log
Mon May 28 08:05:56 2007
Thread 1 advanced to log sequence 24019
Current log# 3 seq# 24019 mem# 0: /u020/apps/oracle/oradata/BAAN/redo03.log
Mon May 28 08:07:29 2007
Thread 1 advanced to log sequence 24020
Current log# 2 seq# 24020 mem# 0: /u020/apps/oracle/oradata/BAAN/redo02.log
Mon May 28 08:08:55 2007
Thread 1 advanced to log sequence 24021
Current log# 1 seq# 24021 mem# 0: /u020/apps/oracle/oradata/BAAN/redo01.log
Mon May 28[b] 08:10:26 2007
Thread 1 advanced to log sequence 24022
Current log# 4 seq# 24022 mem# 0: /u020/apps/oracle/oradata/BAAN/redo04.log
Mon May 28 08:12:05 2007
Thread 1 advanced to log sequence 24023
Current log# 5 seq# 24023 mem# 0: /u020/apps/oracle/oradata/BAAN/redo05.log
Mon May 28 08:13:55 2007
Thread 1 advanced to log sequence 24024
Current log# 3 seq# 24024 mem# 0: /u020/apps/oracle/oradata/BAAN/redo03.log
Mon May 28 11:31:05 2007
Thread 1 advanced to log sequence 24025
Current log# 2 seq# 24025 mem# 0: /u020/apps/oracle/oradata/BAAN/redo02.log
Mon May 28 14:36:13 2007
Thread 1 advanced to log sequence 24026
Current log# 1 seq# 24026 mem# 0: /u020/apps/oracle/oradata/BAAN/redo01.log
Do I need to tune the redo log? Each of redo log file is 50MB. It switched more frequent when there are not many users than real busy hours.
nullSelect may or may not generate redo. Delayed block cleanout is one of the reasons for a query to produce redo: https://metalink.oracle.com/metalink/plsql/f?p=130:14:2631437878498686237::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,40689.1,1,1,1,helvetica#aref1
Another reason is locking the rows with "for update":
SQL> create table t1 as select * from all_objects;
Table created.
SQL> set autot trace stat
SQL> select * from t1;
39310 rows selected.
Statistics
0 recursive calls
0 db block gets
3117 consistent gets
538 physical reads
0 redo size
2524195 bytes sent via SQL*Net to client
18612 bytes received via SQL*Net from client
2622 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
39310 rows processed
SQL> select * from t1 for update;
39310 rows selected.
Statistics
24 recursive calls
40020 db block gets
43446 consistent gets
625 physical reads
7754052 redo size
3501635 bytes sent via SQL*Net to client
18612 bytes received via SQL*Net from client
2622 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
39310 rows processed -
I am getting "Invalid Identifier" while running the below query
Iam getting the error "Invalid Identifier, c_rank" while running the below query. Please help.
select a.*, b.pog_description pog_description, b.start_date,
row_number() over(partition by b.pog_description order by b.start_date) c_rank
from temp_codi_dept_35 a, pog_master_msi b, pog_skus_msi c
where a.sku = c.pog_sku
and b.pog_id = c.pog_id
and b.pog_dept = c.pog_dept
and b.pog_number = c.pog_number
and b.pog_level = c.pog_level
and a.sku = 10263477
and c_rank = 1;>
Iam getting the error "Invalid Identifier, c_rank" while running the below query. Please help.
select a.*, b.pog_description pog_description, b.start_date,
row_number() over(partition by b.pog_description order by b.start_date) c_rank
from temp_codi_dept_35 a, pog_master_msi b, pog_skus_msi c
where a.sku = c.pog_sku
and b.pog_id = c.pog_id
and b.pog_dept = c.pog_dept
and b.pog_number = c.pog_number
and b.pog_level = c.pog_level
and a.sku = 10263477
and c_rank = 1;
>
You can't use 'c_rank' in the where clause because it doesn't exist; you are computing it in the SELECT clause.
Remove the last condition and wrap your query in another one to select by 'c_rank'. -
How to execute the output of the below query automatically
Hi All,
I want to execute the output of the below query automatically, instead of manually copying it and execute.
select 'alter database ['+name+'] set recovery simple' from master.sys.databases where database_id > 4 and state_desc = 'online'
Please provide me a script to do this.
ThanK
KateEXEC sp_MSforeachdb N'ALTER DATABASE [?] SET recovery simple';--- This will set the recovery model for all the system database.The query provided by Vikash16, meets my requirement. Thank you.
-
How the below query is working
Hi,
I am newly joined in the group.
the emp table has 5 rows as below
100 ram 10000.00 10
200 kumar 15000.00 10
300 william 20000.00 10
400 ravi 25000.00 10
500 victor 30000.00 10
i execute the below query
select ename,sal from emp_test where case when sal < 10000 then sal + 1000
when sal < 20000 then sal + 2000
else sal
end < 20000
it gives the below output
ram 10000.00
kumar 15000.00
How the above query is working?
Please explain. thanks in advanceIf you want it to show the changed salary, it has to be in the select line not the where:
select ename,
(case when sal < 10000 then sal + 1000
when sal < 20000 then sal + 2000
else sal
end) sal from emp_test
where case when sal < 10000 then sal + 1000
when sal < 20000 then sal + 2000
else sal
end < 20000 -
I need help on the below problem..
Hi All,
I need help on the below problem..
I've 2 Schemas called
1. MAXIMO and DBLink is GQMFOF
2. GQMMGR adn DBLink is MAXFOFNC
Now i would likw to retrive the data from both the schemas,
i.e some columns from WORKORDER table of maximo schema and some columns from ESTIMATE_HEADER table
of GQMMGR schema..
I'm trying to get the data using DB links, but it is giving TABLE/VIEW doesn't exist.
Please help me on this.
Regards,
gr.Does your user has the SELECT privelage granted for accessing those tables?
Maybe you are looking for
-
How do I get internet to work on ibook G3?
I have an ibook G3. I'm trying to connect to the internet via DSL cable. (I have an airport extreme, but no airport card in my G3, which is why I connect with cable.) When I plug in the ethernet cord, the internet does not work. How do I get my inter
-
Problem sync with iphone could not transfer music because of unknown error -5000
windows Itunes will not sync my music with Iphone 4s because of unknown error (-5000) ?????
-
Integrating bookmarks from other files
I have multiple bookmark files from Firefox and Internet Explorer that I want to integrate into one Safari Bookmark file. 1. I'm thinking of doing this directly by copying and pasting links and adding the html code into the master file. Are there any
-
I have a Satellite p305d running windows vista home premium. I plugged in an external mic and it was quite muted so I went to the speaker icon and right clicked. Went to recording devices and disabled the internal mic thinking that might help if I di
-
Syntax Error while Posting Material
Hi, when posting material the system is throwing a message Syntax error in program RGIMF000 in Include RGIMF000 in Line 1328 Last changed by SAP* Author SAP The data object "GLU1" does not have a component called "RSPONSORED_CLASS". Is there anyway t