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
Similar Messages
-
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 -
How to tune the update query?
HI Expert,
Our client is facing a performance problem.
Every alternate day they use to run a load on the database.
Database is RAC and when they execute a load database used to get hang.
Everytime we have to regather a stats, after that the update statement execute.
They are also saying that the query is taking time to execute.
previously it used to execute fast.
It would be great if you expert help to find out the bottleneck and solutions.
this stats i generated before creating the indexes on PRIM_IND column
SQL> Update /*+ index(IND) */ ENT_HUB.ADDR set PRIM_IND=0 where PRIM_IND=1 and SCD_ACTV_IND=1;
1477866 rows updated.
Execution Plan
Plan hash value: 2784578406
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | UPDATE STATEMENT | | 1321K| 7743K| 25185 (1)| 00:05:03 |
| 1 | UPDATE | ADDR | | | | |
|* 2 | TABLE ACCESS FULL| ADDR | 1321K| 7743K| 25185 (1)| 00:05:03 |
Predicate Information (identified by operation id):
2 - filter("PRIM_IND"=1 AND "SCD_ACTV_IND"=1)
below stats i generated after creating the index.
SQL> Update /*+ index(addr IND) */ ENT_HUB.ADDR set PRIM_IND=0 where PRIM_IND=1 and SCD_ACTV_IND=1;
1478212 rows updated.
Execution Plan
Plan hash value: 736707583
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | UPDATE STATEMENT | | 622K| 2432K| 102K (1)| 00:20:33 |
| 1 | UPDATE | ADDR | | | | |
|* 2 | TABLE ACCESS BY INDEX ROWID| ADDR | 622K| 2432K| 102K (1)| 00:20:33 |
|* 3 | INDEX RANGE SCAN | IND | 1245K| | 2382 (1)| 00:00:29 |
Predicate Information (identified by operation id):
2 - filter("SCD_ACTV_IND"=1)
3 - access("PRIM_IND"=1)
Thanks,user646034 wrote:
Hi,
Currently we are using without index.
however we are not getting performance improvement.
Please suggest us what can we do to achieve the performance again.
ThanksDon't update that many rows?
Not sure what else we can offer you for assistance, it's possible you could change the process flow of your application to not need to update the rows (possibly decode values upon the insert) or change the data model, etc....
But that's all outside the scope of possibility based on the information you've provided.
You're doing a LOT (relative to the number of rows in the table) of updating, that takes time and is bound by the laws of physics, we can't alter those here. -
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 AMPlease 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' -
How to write the below query with parameter and is null
Hi, I need to retrive the data if the parameter is passed on the field, else retrive all records whose field is null
Example
CREATE TABLE DEPT
(DEPTNO NUMBER(2),
DNAME VARCHAR2(14),
LOC VARCHAR2(13) );
INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');
insert into dept values (30, 'SALES', 'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');
alter table dept add(object_id number);
insert into dept values (50, 'OPERATIONS', 'BOSTON',1);
insert into dept values (60, 'OPERATIONS', 'BOSTON',1);
INSERT INTO DEPT VALUES (70, 'OPERATIONS', 'BOSTON',2);
select * from dept where object_id =:p_object_id
If i pass the object_id as 1 , it shloud retrive the values of dept with object_id 1, but if i dont pass the object_id, it should retrive all the records whose object_id is null
IF 1 is passed, as object id , it should retrive, 50, 60, if 1 is not passed as object_id it should retive 10,20,30,40
It works fine for me seperately as,
select * from dept where object_id =:p_object_id -- 1
select * from dept where object_id is null;
Is this possible to do in single query.
ThanksSELECT *
FROM dept
WHERE object_id = :p_object_id
OR (object_id is null and :p_object_id is null)
is one approach. It's a bit verbose but the meaning is clear. If you can identify a value that would never appear in the data (-1 for example)
WHERE nvl( object_id, -1 ) = nvl(p_object_id, -1 );
Justin -
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. -
how to reduce the execution time for the below query..."sum" operation is taking too much long time....
SELECT
B.DP_AVPS_STATUS,
SUM(DP_AD_CURR_BAL*D.ISIN_CLOSE_PRICE) Qty,
B.DP_NET_WORTH,
B.CMN_DP_FLAG,
B.RESTRAIN_TYPE ,
B.LETT_GENR_DATE,
E.MAX_NET_WORTH,
E.MIN_NET_WORTH
FROM DPMADV0 A, PABRNCHDTLP0 B, PABANKCCYP0 D,PADPNETWORTHDTLP0 E,
(SELECT CID_NUMB FROM CFCUSTMASTD0
WHERE SUB_TYPE NOT IN (1,2,5,6,7,28,29,30,31,40,41,48,49,50,57,83)) C
WHERE A.DP_AD_BR_NBR = B.BRNCH_NUMB
AND A.DP_AD_CCY_CDE = D.CCY_ALPHA_CODE
AND A.DP_AD_ACCT_NBR = C.CID_NUMB
AND E.DP_ACCOUNT_TYPE = B.DP_ACCOUNT_TYPE
AND SUBSTR(B.BRNCH_NUMB,1,3) like SUBSTR(:hvBrnchNumb,1,3)
AND ((B.DP_TYPE IN (2) AND B.DP_ACCOUNT_TYPE IN (10, 11)) or
(B.DP_TYPE IN (3) and B.DP_ACCOUNT_TYPE=11 ) )
AND B.DEL_FLAG = 'N'
AND B.DP_STATUS = 'A'
AND D.ISIN_STATUS = 'A'
GROUP BY B.DP_NET_WORTH,B.RESTRAIN_TYPE,B.DP_AVPS_STATUS,E.MAX_NET_WORTH,
E.MIN_NET_WORTH,B.CMN_DP_FLAG,B.LETT_GENR_DATE;Hi,
please produce a plan with rowsource statistics (if not sure how, follow instructions in http://savvinov.com/2012/09/24/a-sqlplus-script-for-diagnosing-poor-sql-plans/) and post it using tags to preserve formatting.
Best regards,
Nikolay
P.S. I also suggest that you work on your open threads:
Handle: 946903
Status Level: Newbie
Registered: Jul 16, 2012
Total Posts: 11
Total Questions: 5 (5 unresolved) -
How to tune the query...?
Hi all,
I am having a table with millions of records and the query is taking hours
time. How to tune the query apart from doing the following things.
1. Creating or Deleting indexes.
2. Using Bind variables.
3. Using Hints.
4. Updating the Statitics regurarly.
Actually, i have asked this question in interview how to tune the query.
I told him the above 4 things. Then he told, these are not working, then
how you will tune this query.
Thanks in advance,
Paluser546710 wrote:
Actually, i have asked this question in interview how to tune the query.
I told him the above 4 things. Then he told, these are not working, then
how you will tune this query.It actually depends on the scenario/problem given.
You may want to read this first.
When your query takes too long ...
When your query takes too long ...
HOW TO: Post a SQL statement tuning request - template posting
HOW TO: Post a SQL statement tuning request - template posting -
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 -
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.
-
Request for tunning the SQL query
Hi,
I've a query mentioned below.I've tried it in different ways.But still it is taking much time.
And there are some 9 indexes created on the column siteid. And both the table having indexes.But still full table scanning occuring for both the tables. Can any one help on this.Or can anyone write the same query in a different way.
select r.recordkey,
r.orgid,
r.siteid,
r.class,
w.pscdate,
w.ascdate,
w.targstartdate,
w.targcompdate,
w.schedfinish,
w.actfinish,
w.estdur,
w.wonum,
w.mprn,
w.sihousename wositehousename,
w.sihouseno wositehouseno,
w.sistreet wositestreet,
w.sicounty wositecounty,
w.siposttown wositeposttown,
w.sipostcode wositepostcode,
w.workorderid
from relatedrecord r,
workorder w
where r.relatedreckey = case when w.parent is null then w.wonum else w.parent end
and r.orgid = w.orgid
and r.siteid = w.siteid
and r.relatedrecclass = 'WORKORDER'
Explain Plan Res:
Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop
SELECT STATEMENT Optimizer Mode=ALL_ROWS 38 K 4819
HASH JOIN 38 K 5 M 4819
TABLE ACCESS FULL MAXIMO.RELATEDRECORD 30 K 1 M 390
TABLE ACCESS FULL MAXIMO.WORKORDER 229 K 26 M 2922
Regards,
Arjun.Hi,
Some question.
1) r.relatedrecclass = 'WORKORDER', how many records are there with relatedrecclass as "WORKORDER" compared to the total number of records in that table (in percentage)
2) Do we have index on relatedrecclass? (if possible in combination with recordkey and class column)
3) What is the total number of records in both the table?
4) What is the expected number of records with the below query?
Regards
Anurag -
How to view the sql query?
hi,
how to view the sql query formed from the xml structure in the receiver jdbc?You can view SAP Note at
http://service.sap.com/notes
But you require SMP login ID for this which you should get from your company. The content of the notes are as follows:
Reason and Prerequisites
You are looking for additional parameter settings. There are two possible reasons why a feature is available via the "additional parameters" table in the "advanced mode" section of the configuration, but not as documented parameter in the configuration UI itself:
Category 1: The parameter has been introduced for a patch or a SP upgrade where no UI upgrade and/or documentation upgrade was possible. In this case, the parameter will be moved to the UI and the documentation as soon as possible. The parameter in the "additional parameters" table will be deprecated after this move, but still be working. The parameter belongs to the supported adapter functionality and can be used in all, also productive, scenarios.
Category 2. The parameter has been introduced for testing purposes, proof-of-concept scenarios, as workaround or as pre-released functionality. In this case, the parameter may or may not be moved to the UI and documentation, and the functionality may be changed, replaced or removed. For this parameter category there is no guaranteed support and usage in productive scenarios is not supported.
When you want to use a parameter documented here, please be aware to which category it belongs!
Solution
The following list shows all available parameters of category 1 or 2. Please note:
Parameter names are always case-sensitive! Parameter values may be case-sensitive, this is documented for each parameter.
Parameter names and values as documented below must be used always without quotaton marks ("), if not explicitly stated otherwise.
The default value of a parameter is always chosen that it does not change the standard functionality
JDBC Receiver Adapter Parameters
1. Parameter name: "logSQLStatement"
Parameter type: boolean
Parameter value: true for any string value, false only for empty string
Parameter value default: false (empty String)
Available with: SP9
Category: 2
Description:
When implementing a scenario with the JDBC receiver adapter, it may be helpful to see which SQL statement is generated by the JDBC adapter from the XI message content for error analysis. Before SP9, this can only be found in the trace of the JDBC adapter if trace level DEBUG is activated. With SP9, the generated SQL statement will be shown in the details page (audit protocol) of the message monitor for each message directly.
This should be used only during the test phase and not in productive scenarios.
Regards,
Prateek -
How to Tune the Transactions/ Z - reports /Progr..of High response time
Dear friends,
in <b>ST03</b> work load anlysis menu.... there are some z-reports, transactions, and some programmes are noticed contineously that they are taking the <b>max. response time</b> (and mostly >90%of time is DB Time ).
how to tune the above situation ??
Thank u.Siva,
You can start with some thing like:
ST04 -> Detail Analysis -> SQL Request (look at top disk reads and buffer get SQL statements)
For the top SQL statements identified you'd want to look at the explain plan to determine if the SQL statements is:
1) inefficient
2) are your DB stats up to date on the tables (note up to date stats does not always means they are the best)
3) if there are better indexes available, if not would a more suitable index help?
4) if there are many slow disk reads, is there an I/O issue?
etc...
While you're in ST04 make sure your buffers are sized adequately.
Also make sure your Oracle parameters are set according to this OSS note.
Note 830576 - Parameter recommendations for Oracle 10g -
How to insert the select query result into table?
How to insert the select query result into table?
SELECT top 20 creation_time
,last_execution_time
,total_physical_reads
,total_logical_reads
,total_logical_writes
, execution_count
, total_worker_time
, total_elapsed_time
, total_elapsed_time / execution_count avg_elapsed_time
,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY total_elapsed_time / execution_count DESC;
Thanks,
Tirumala1. SELECT INTO
Below method will create table when data is inserted from one table to another table. Its useful when you need exactly same datatype as source table.
Use AdventureWorks2008R2;
Go
---Insert data using SELECT INTO
SELECT AddressLine1, City
INTO BothellAddresses
FROM Person.Address
where City = 'Bothell';
GO
---VERIFY DATA
Select AddressLine1, City
FROM BothellAddresses
---DROP TABLE
DROP TABLE BothellAddresses
GO
2. INSERT INTO SELECT
Below method will need table to be created prior to inserting data. Its really useful when table is already created and you want insert data from
another table.
Use AdventureWorks2008R2;
Go
---Create Table
CREATE TABLE BothellAddresses (AddressLine1 NVARCHAR(60), City NVARCHAR(30))
---Insert into above table using SELECT
INSERT INTO BothellAddresses(AddressLine1, City)
SELECT AddressLine1, City
FROM Person.Address
where City = 'Bothell';
---VERIFY DATA
Select AddressLine1, City
FROM BothellAddresses
---DROP TABLE
DROP TABLE BothellAddresses
GO
Regards,
Vishal Patel
Blog: http://vspatel.co.uk
Site: http://lehrity.com -
How to transport the BW query's variable to BO webi report
Hi all
I'd like to know how to transport the BW query's variable to BO 's webi . today ,I created a sap customer varible in my bw system to get the max calmonth in the active table.The varible in the BW side run's well ,but I use this query to build a new univers ,and created a new webi report base on this univers ,but the question is the webi report can't get the varible's value I wann to know how to transport the bw varible value to BO webi report
Thanks and regards,
Peter .zhuI have changed my variaable in my bw query ,I found if you use SAP default variable it is ok in BO side . So I get a guidline by SAP default variable ,I changed my customer variable in variables edite ,don't use 'ready for input' .And then the variable can be useful in BO side .
Edited by: peter zhu on Jun 16, 2008 11:43 AM
Maybe you are looking for
-
When trying to update apps, I get the message: "Account not in this store,...switch to the Canadian store before purchasing" How to I switch, and how did it even get changed to US store? I don't remember changing anything, and I used to be able to
-
I am unable to print anything from an internet web page. I continually get "printer not activated, error code- 30" followed by "An unknown error occurred while printing". I can copy the material from the web page, place into a Word document and then
-
Hi, Could you let me know how u201CA/R Down Payment Requestu201D menu to be appeared on the main menu? I went to Main Menu - Form Settings but could not find it. SBO Version: 8.81 Localization: US Thank you, Tomoko
-
Flash MX 2004 & QT 7.1.5
I know you had to use Flash Player 5 for previous QT export from Flash, but does the latest QT support Flash at all? There isn't even a place to check Flash support in QT 7.1.5's advanced settings that I can see. Is there any way around this? It work
-
Audio switching using optical connection
I am directly connecting to my 2005-era Denon receiver (AV3805, no HDMI) using an optical connection. With the ATV2 "Dolby Digital" setting to 'On', I can get Dolby Digital (5.1) from movies on iTunes, but I'm wondering if the Denon unit is capable o