Performance of the query for YTD info
Hi Experts,
I have a query it takes more time when you run that query for period or year. Like selection ceritaria is few days info work quick. But when it run for period it take more then 10 minutes.
Give me suggestions how to speed up the query
Thanks
Build aggregates. Goto RSRT, execute and debug, switch on statistics and display aggregates checkbox. See whether an aggregate is hit or why not and build aggregates accordingly.
Also look at statsitcs if database is performance killer see events 9000ff for this.
Other hints: reduce start level of your query and remove some chracteristics if possible.
Regards,
Juergen
Similar Messages
-
Help required for improving performance of the Query
Hello SAP Techies,
I have MRP Query which shows Inventory projection by Calendar Year/Month wise.
There are 2 variables Plant and Material in free charateristics where it has been restricted by replacement of Query result .
Another query is Control M Query which is based on multiprovider. Multiprovider is created on 5 cubes.
The Query is taking 20 -15 Mins to get the result.
Due to replacement path by query result for the 2 variables first the control M Query is excuted. Business wanted to see all those materials in MRP query which are allocated to base plant hence they designed the query to use replacement Path by Query result. So it will get all the materials and plants from the control M query and will find the Invetory projection for the same selection in MRP query.
Is there any way I can improve the performance of the Query.
Query performance has been discussed innumerable times in the forums and there is a lot of information on the blogs and the WIKI - please search the forums before posting and if the existing posts do no answer your question satisfactorily then please raise a new post - else almost all the answers you get will be rehashed versions of previous posts ( and in most cases without attribution to the original author )
Edited by: Arun Varadarajan on Apr 19, 2011 9:23 PMHi ,
Please see if you can make these changes currently to the report . It will help in improving the performance of the query
1. Select the right read mode.
Reading data during navigation minimizes the impact on
the application server resources because only data that
the user requires will be retrieved.
2. Leverage filters as much as possible. Using filters contributes to
reducing the number of database reads and the size of the result set,
hereby significantly improving query runtimes.
Filters are especially valuable when associated with u201Cbig
dimensionsu201D where there is a large number of characteristics such as
customers and document numbers.
3. Reduce RKFs in the query to as few as possible. Also, define
calculated & RKFs on the Infoprovider level instead of locally within the query.
Regards
Garima -
Please help me to increase the performance of the query
Hello
I am not an oracle expert or developer and i have a problem to resolve.
Below is the query and explaiation plan and seeking the help to improve the performance of the query.
Our Analysis,
The query runs good,takes less one minute and fetches the results but during peak time it takes 8 minutes
Require anyone suggestion's to improve the query.
The query is generated from the Microsft dll so we dont have SQL code and require some help on tuning the tables.
If tuning the query improves then also fine please suggest for that also.
Enviroment: Solaris 8
DB : oracle 9i
(SELECT vw.dispapptobjid, vw.custsiteobjid, vw.emplastname, vw.empfirstname,
vw.scheduledonsite AS starttime, vw.appttype, vw.latestart,
vw.endtime, vw.typetitle, vw.empobjid, vw.latitude, vw.longitude,
vw.workduration AS DURATION, vw.dispatchtype, vw.availability
FROM ora_appt_disp_view vw
WHERE ( ( vw.starttime >=
TO_DATE ('2/12/2007 4:59 PM', 'MM/DD/YYYY HH12:MI AM')
AND vw.starttime <
TO_DATE ('2/21/2007 3:59 PM', 'MM/DD/YYYY HH12:MI AM')
OR vw.endtime >
TO_DATE ('2/12/2007 4:59 PM', 'MM/DD/YYYY HH12:MI AM')
AND vw.endtime <=
TO_DATE ('2/21/2007 3:59 PM', 'MM/DD/YYYY HH12:MI AM')
OR ( vw.starttime <=
TO_DATE ('2/12/2007 4:59 PM', 'MM/DD/YYYY HH12:MI AM')
AND vw.endtime >=
TO_DATE ('2/21/2007 3:59 PM', 'MM/DD/YYYY HH12:MI AM')
UNION
(SELECT 0 AS dispapptobjid, emp.emp_physical_site2site AS custsiteobjid,
emp.last_name AS emplastname, emp.first_name AS empfirstname,
TO_DATE ('1/1/3000', 'MM/DD/YYYY') AS starttime, 'E' AS appttype,
NULL AS latestart, NULL AS endtime, '' AS typetitle,
emp.objid AS empobjid, 0 AS latitude, 0 AS longitude, 0 AS DURATION,
'' AS dispatchtype, 0 AS availability
FROM table_employee emp, table_user usr
WHERE emp.employee2user = usr.objid AND emp.field_eng = 1 AND usr.status = 1)
ORDER BY empobjid, starttime, endtime DESC
Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop
SELECT STATEMENT Optimizer Mode=HINT: ALL_ROWS 23 K 11312
SORT UNIQUE 23 K 3 M 11140
UNION-ALL
VIEW ORA_APPT_DISP_VIEW 17 K 3 M 10485
UNION-ALL
CONCATENATION
NESTED LOOPS OUTER 68 24 K 437
NESTED LOOPS 68 23 K 369
NESTED LOOPS OUTER 68 25 K 505
NESTED LOOPS OUTER 68 24 K 505
NESTED LOOPS 68 23 K 369
NESTED LOOPS 68 22 K 369
NESTED LOOPS OUTER 68 22 K 369
NESTED LOOPS 19 6 K 312
NESTED LOOPS 19 5 K 312
HASH JOIN 19 5 K 293
NESTED LOOPS 19 5 K 274
NESTED LOOPS 19 4 K 236
NESTED LOOPS 19 4 K 198
NESTED LOOPS OUTER 19 3 K 160
NESTED LOOPS OUTER 19 3 K 160
NESTED LOOPS OUTER 19 4 K 160
NESTED LOOPS OUTER 19 1 K 103
NESTED LOOPS OUTER 19 2 K 103
NESTED LOOPS OUTER 19 2 K 103
TABLE ACCESS BY INDEX ROWID TABLE_DISPTCHFE 19 1 K 46
INDEX RANGE SCAN GSA_SCHED_REPAIR 44 3
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 22
INDEX RANGE SCAN GSA_COMDFE 1 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 22
INDEX RANGE SCAN GSA_COMDFE 1 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 22 3
INDEX RANGE SCAN GSA_COMDFE 1 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 28
INDEX RANGE SCAN IND_CASE_COMMIT2CASE 2 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 28
INDEX RANGE SCAN IND_CASE_COMMIT2CASE 2 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 28 3
INDEX RANGE SCAN IND_CASE_COMMIT2CASE 2 2
TABLE ACCESS BY INDEX ROWID TABLE_CASE 1 30 2
INDEX UNIQUE SCAN CASE_OBJINDEX 1 1
TABLE ACCESS BY INDEX ROWID TABLE_SITE 1 12 2
INDEX UNIQUE SCAN SITE_OBJINDEX 1 1
TABLE ACCESS BY INDEX ROWID TABLE_ADDRESS 1 12 2
INDEX UNIQUE SCAN ADDRESS_OBJINDEX 1 1
TABLE ACCESS FULL TABLE_EMPLOYEE 1 34 1
INDEX UNIQUE SCAN SITE_OBJINDEX 1 6 1
INDEX UNIQUE SCAN USER_OBJINDEX 1 6
TABLE ACCESS BY INDEX ROWID TABLE_X_GSA_TIME_STAMPS 4 48 3
INDEX RANGE SCAN GSAIDX_TS2DISP 1 2
INDEX UNIQUE SCAN GBST_ELM_OBJINDEX 1 6
INDEX UNIQUE SCAN GBST_ELM_OBJINDEX 1 6
TABLE ACCESS BY INDEX ROWID TABLE_MOD_LEVEL 1 12 1
INDEX UNIQUE SCAN MOD_LEVEL_OBJINDEX 1
INDEX UNIQUE SCAN PART_NUM_OBJINDEX 1 6
INDEX UNIQUE SCAN GBST_ELM_OBJINDEX 1 6
INDEX UNIQUE SCAN SUBCASE_OBJINDX 1 6 1
NESTED LOOPS OUTER 68 25 K 505
NESTED LOOPS OUTER 68 24 K 505
NESTED LOOPS OUTER 68 24 K 437
NESTED LOOPS 68 23 K 369
NESTED LOOPS 68 23 K 369
NESTED LOOPS 68 22 K 369
NESTED LOOPS OUTER 68 22 K 369
NESTED LOOPS 19 6 K 312
NESTED LOOPS 19 5 K 312
NESTED LOOPS 19 5 K 293
NESTED LOOPS 19 5 K 274
NESTED LOOPS 19 4 K 236
NESTED LOOPS 19 4 K 198
NESTED LOOPS OUTER 19 4 K 160
NESTED LOOPS OUTER 19 3 K 160
NESTED LOOPS OUTER 19 3 K 160
NESTED LOOPS OUTER 19 2 K 103
NESTED LOOPS OUTER 19 2 K 103
NESTED LOOPS OUTER 19 1 K 103
TABLE ACCESS BY INDEX ROWID TABLE_DISPTCHFE 19 1 K 46
INDEX RANGE SCAN GSA_SCHED_REPAIR 44 3
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 22 3
INDEX RANGE SCAN GSA_COMDFE 1 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 22
INDEX RANGE SCAN GSA_COMDFE 1 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 22
INDEX RANGE SCAN GSA_COMDFE 1 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 28 3
INDEX RANGE SCAN IND_CASE_COMMIT2CASE 2 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 28
INDEX RANGE SCAN IND_CASE_COMMIT2CASE 2 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 28
INDEX RANGE SCAN IND_CASE_COMMIT2CASE 2 2
TABLE ACCESS BY INDEX ROWID TABLE_CASE 1 30 2
INDEX UNIQUE SCAN CASE_OBJINDEX 1 1
TABLE ACCESS BY INDEX ROWID TABLE_SITE 1 12 2
INDEX UNIQUE SCAN SITE_OBJINDEX 1 1
TABLE ACCESS BY INDEX ROWID TABLE_ADDRESS 1 12 2
INDEX UNIQUE SCAN ADDRESS_OBJINDEX 1 1
TABLE ACCESS BY INDEX ROWID TABLE_EMPLOYEE 1 34 1
INDEX UNIQUE SCAN EMPLOYEE_OBJINDEX 1
INDEX UNIQUE SCAN SITE_OBJINDEX 1 6 1
INDEX UNIQUE SCAN USER_OBJINDEX 1 6
TABLE ACCESS BY INDEX ROWID TABLE_X_GSA_TIME_STAMPS 4 48 3
INDEX RANGE SCAN GSAIDX_TS2DISP 1 2
INDEX UNIQUE SCAN GBST_ELM_OBJINDEX 1 6
INDEX UNIQUE SCAN GBST_ELM_OBJINDEX 1 6
INDEX UNIQUE SCAN GBST_ELM_OBJINDEX 1 6
INDEX UNIQUE SCAN SUBCASE_OBJINDX 1 6 1
TABLE ACCESS BY INDEX ROWID TABLE_MOD_LEVEL 1 12 1
INDEX UNIQUE SCAN MOD_LEVEL_OBJINDEX 1
INDEX UNIQUE SCAN PART_NUM_OBJINDEX 1 6
NESTED LOOPS OUTER 68 25 K 505
NESTED LOOPS OUTER 68 24 K 505
NESTED LOOPS OUTER 68 24 K 437
NESTED LOOPS 68 23 K 369
NESTED LOOPS 68 23 K 369
NESTED LOOPS 68 22 K 369
NESTED LOOPS OUTER 68 22 K 369
NESTED LOOPS 19 6 K 312
NESTED LOOPS 19 5 K 312
NESTED LOOPS 19 5 K 293
NESTED LOOPS 19 5 K 274
NESTED LOOPS 19 4 K 236
NESTED LOOPS 19 4 K 198
NESTED LOOPS OUTER 19 4 K 160
NESTED LOOPS OUTER 19 3 K 160
NESTED LOOPS OUTER 19 3 K 160
NESTED LOOPS OUTER 19 2 K 103
NESTED LOOPS OUTER 19 2 K 103
NESTED LOOPS OUTER 19 1 K 103
TABLE ACCESS BY INDEX ROWID TABLE_DISPTCHFE 19 1 K 46
INDEX RANGE SCAN GSA_REQ_ETA 44 3
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 22 3
INDEX RANGE SCAN GSA_COMDFE 1 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 22
INDEX RANGE SCAN GSA_COMDFE 1 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 22
INDEX RANGE SCAN GSA_COMDFE 1 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 28 3
INDEX RANGE SCAN IND_CASE_COMMIT2CASE 2 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 28
INDEX RANGE SCAN IND_CASE_COMMIT2CASE 2 2
TABLE ACCESS BY INDEX ROWID TABLE_COMMIT_LOG 1 28
INDEX RANGE SCAN IND_CASE_COMMIT2CASE 2 2
TABLE ACCESS BY INDEX ROWID TABLE_CASE 1 30 2
INDEX UNIQUE SCAN CASE_OBJINDEX 1 1
TABLE ACCESS BY INDEX ROWID TABLE_SITE 1 12 2
INDEX UNIQUE SCAN SITE_OBJINDEX 1 1
TABLE ACCESS BY INDEX ROWID TABLE_ADDRESS 1 12 2
INDEX UNIQUE SCAN ADDRESS_OBJINDEX 1 1
TABLE ACCESS BY INDEX ROWID TABLE_EMPLOYEE 1 34 1
INDEX UNIQUE SCAN EMPLOYEE_OBJINDEX 1
INDEX UNIQUE SCAN SITE_OBJINDEX 1 6 1
INDEX UNIQUE SCAN USER_OBJINDEX 1 6
TABLE ACCESS BY INDEX ROWID TABLE_X_GSA_TIME_STAMPS 4 48 3
INDEX RANGE SCAN GSAIDX_TS2DISP 1 2
INDEX UNIQUE SCAN GBST_ELM_OBJINDEX 1 6
INDEX UNIQUE SCAN GBST_ELM_OBJINDEX 1 6
INDEX UNIQUE SCAN GBST_ELM_OBJINDEX 1 6
INDEX UNIQUE SCAN SUBCASE_OBJINDX 1 6 1
TABLE ACCESS BY INDEX ROWID TABLE_MOD_LEVEL 1 12 1
INDEX UNIQUE SCAN MOD_LEVEL_OBJINDEX 1
INDEX UNIQUE SCAN PART_NUM_OBJINDEX 1 6
NESTED LOOPS 16 K 2 M 5812
HASH JOIN 16 K 2 M 5812
HASH JOIN 16 K 2 M 5286
TABLE ACCESS FULL TABLE_EMPLOYEE 13 K 441 K 28
HASH JOIN 16 K 1 M 5243
TABLE ACCESS FULL TABLE_SCHEDULE 991 11 K 2
HASH JOIN OUTER 16 K 1 M 5240
HASH JOIN OUTER 16 K 1 M 3866
HASH JOIN OUTER 16 K 1 M 450
HASH JOIN 16 K 1 M 44
TABLE ACCESS FULL TABLE_GBST_ELM 781 14 K 2
TABLE ACCESS FULL TABLE_APPOINTMENT 16 K 822 K 41
INDEX FAST FULL SCAN CASE_OBJINDEX 1 M 6 M 201
TABLE ACCESS FULL TABLE_SITE 967 K 11 M 3157
TABLE ACCESS FULL TABLE_ADDRESS 961 K 11 M 1081
INDEX FAST FULL SCAN SITE_OBJINDEX 967 K 5 M 221
INDEX UNIQUE SCAN USER_OBJINDEX 1 6
HASH JOIN 6 K 272 K 51
TABLE ACCESS FULL TABLE_USER 6 K 51 K 21
TABLE ACCESS FULL TABLE_EMPLOYEE 6 K 220 K 28Hi,
First-off, it appear that you are querying a view. I would redo the auery against the base table.
Next, look at a function-based index for the DATE column. Here are my notes:
http://www.dba-oracle.com/t_function_based_indexes.htm
http://www.dba-oracle.com/oracle_tips_index_scan_fbi_sql.htm
Also, make sure you are analyzed properly with dbms_stats:
http://www.dba-oracle.com/art_builder_dbms_stats.htm
And histograms, if appropriate:
http://www.dba-oracle.com/art_builder_histo.htm
Lasty, look at increasing hash_area_size or pga_aggregate_tagtet, depending on your table sizes:
http://www.dba-oracle.com/art_so_undocumented_pga_parameters.htm
Hope this helps. . . .
Donald K. Burleson
Oracle Press Author -
Performance of the query is poor
Hi All,
This is Prasad. I have a problem with the query it is taking more time to retrieve the data from the Cube. In the query they are using a Variable of type Customer Exit. The Cube is not at compressed. I think the issue with the F fact table is due to the high number of table partitions (requests) that it has to select from. If I compress the cube, the performance of the query is increased r not? Is there any alternative for improving the performance of the query. Somebody suggested Result set query, iam not aware of this technique if u know let me know.
Thanks in advanceHi Prasad,
Query performance will depend on many factors like
1. Aggregates
2. Compression of requests
3. Query read mode setting
4. Cache memory setting
5. By Creating BI Accelerator Indexes on Infocubes
6. Indexes
Proposing aggregates to improve query performance:
First try to execute the query in RSRT on which u required to build aggregates. Check how much time it is taking to execute.....and whether it is required to build aggregate on this querry?? To get this information, Goto SE11> Give tabl name RSDDSTAT_DM in BI7.0 or RSDDSTAT in BW3.x.> Disply -> Contnts-> Give from date and to date values as today, user name as Ur user name, and give the query name
--> execute.
Now u'll get a list with fields like Object anme(Report anme), Time read, Infoprovider name(Multiprovider), Partprovider name (Cube), Aggregate name... etc. If the time read is less than 100,000,000 (100 sec) is acceptable. If the time read is more than 100 sec then it is recommended to create Aggregates for that query to increase performance. Keep in mind this time read.
Again goto RSRT> Give query name> Execute+Debug-->
A popup will come in that select the check box display aggregates found--> continue. If any aggregates or exist for that
query it will display first if u press on continue button, it will display from which cube which fields are coming it will display...try to copy this list of objects on which aggregate can be created into one text file...
then select that particular cube in RSA1>context>Maintain Aggregates-> Create by own> click on create aggregate button on top left side> Give discription of the aggregate>continue> take first object from list and fclick on find button in aggregates creation screen> give the object name and search... drag and drop that object into aggregate name right side (Drag and drop all the fields like this into aggregate).---->
Activate the aggregate--> it will take some time once the activation finishes --> make sure that aggregate is in switch on mode.
Try to xecute the query from RSRT again and find out the time read and compare this with first time read. If it is less tahn first time read then u can propose this aggregate to incraese the performance of the query.
I hope this will help u... go through the below links to know about aggregates more clear.
http://help.sap.com/saphelp_nw04s/helpdata/en/10/244538780fc80de10000009b38f842/frameset.htm
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/3f66ba90-0201-0010-ac8d-b61d8fd9abe9
Follow this thread for creation of BIA Indexes:
Re: BIA Creation
Hopr this helps...
Regards,
Ramki. -
Performance of the query incresed to 1 hour 15 mins....
the view is working, but the performance of the query is horrible.
Our pull time has increased from 25 minutes to 1 hour and 15 minutes.Can you please advice me the same solution pplies for prodction box also...
Production database details::::
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The query in production database::::
SELECT /*+ALL_ROWS*/
2 a .lcl_id AS Ora_Order, --Order_Number,
3 a.closed_date AS Closed_Date,
4 a.modified_date AS Modified_Date,
5 a.received_date AS Received_Date,
6 a.status AS Status,
7 b.seq AS Ora_Line, --Line_Number
8 b.sub_seq AS Ora_sub_line,
9 c.seq AS Unit_Number,
10 SUBSTR (c.olig_group_id, INSTR (c.olig_group_id,
11 '.',
12 -1,
13 1)
14 + 1)
15 AS shipment_number,
16 c.tag AS Tag,
17 c.special_tag AS Customer_Tag,
18 h.fmly_serial_id AS Serial_Number,
19 d.allocation_timestamp AS Alloc_Date,
20 MIN (f.closed_timestamp) AS First_Event_On_Floor,
21 -- CALIBRATION
22 MAX (DECODE (f.uutt_mstr_id, 1, f.closed_timestamp, NULL))
23 AS Calibration_Date,
24 -- PACKAGING
25 MAX (DECODE (f.uutt_mstr_id, 50, f.closed_timestamp, NULL))
26 AS Package_Date,
27 -- CAPS KITTING
28 MAX(DECODE (
29 f.uutt_mstr_id,
30 100,
31 DECODE (f.stnd_seq, 2024961, f.closed_timestamp, NULL)
32 ))
33 AS Caps_Kitting_Date,
34 lastprodsn.pm_mstr_id AS Tagged_Model,
35 b.CEP AS ETO_Number,
36 j.VALUE AS Product_Options,
37 a.PO AS PO_Number,
38 -- lastprodsn.uut_glbl_id as LastProdSN_UUT_Glbl_ID -- replaced on 3/31/2011 BJACK
39 MAX (DECODE (f.uutt_mstr_id, 2, f.glbl_id, NULL))
40 AS LastProdSN_UUT_Glbl_ID
41 FROM ssc.ordr_hdrs a, -- glbl_id = sales order number
42 ssc.ordr_lns b, -- oh_glbl_id = SO #, SEQ = line number
43 ssc.ordr_ln_itms c, -- ol_oh_glbl_id = SO #, ol_seq = line #, seq = unit #, olig_group_id = shipment #
44 ssc.omar_track_maps d, -- for tracking id, holds the allocation timestamp
45 (SELECT x.uut_glbl_id,
46 x.oli_ol_oh_glbl_id,
47 x.oli_ol_seq,
48 x.oli_ol_sub_seq,
49 x.oli_seq,
50 x.sm_glbl_id,
51 x.pm_mstr_id
52 FROM ssc.serial_prod_uut_maps x
53 JOIN
54 ( SELECT oli_ol_oh_glbl_id,
55 oli_ol_seq,
56 oli_ol_sub_seq,
57 oli_seq,
58 MAX (uut_glbl_id) Max_oli_uut_glbl_id
59 FROM ssc.serial_prod_uut_maps
60 GROUP BY oli_ol_oh_glbl_id,
61 oli_ol_seq,
62 oli_ol_sub_seq,
63 oli_seq) MAXOLIUUT
64 ON MAXOLIUUT.Max_oli_uut_glbl_id = x.uut_glbl_id
65 AND MAXOLIUUT.oli_ol_oh_glbl_id =
66 x.oli_ol_oh_glbl_id
67 AND MAXOLIUUT.oli_ol_seq = x.oli_ol_seq
68 AND MAXOLIUUT.oli_ol_sub_seq = x.oli_ol_sub_seq
69 AND MAXOLIUUT.oli_seq = x.oli_seq) lastprodsn, -- find latest uut for OLI (assumes UUT ids are in sequence so max is latest; needed to deal with SN or product chgs for OLI)
70 ssc.serial_prod_uut_maps e, -- go get all UUT IDs for the OLI's latest product number and serial number
71 ssc.uuts f, -- go get UUT details for all of the good OLI-product-SNs
72 ssc.uut_params g, -- go get the package void parameter (so can exclude them)
73 ssc.serial_mstrs h, -- go get serial number for the SN id
74 ssc.ORDR_LN_PARAMS j -- go get options for product number
75 WHERE -- join a to b sales orders to sales order lines
76 a .glbl_id = b.oh_glbl_id
77 AND -- join b to c to get sales order line items (units for a line item)
78 b.oh_glbl_id = c.ol_oh_glbl_id
79 AND b.seq = c.ol_seq
80 AND b.sub_seq = c.ol_sub_seq
81 AND -- join c to d to get allocation date if available (outer join)
82 c.otm_track_id = d.track_id(+)
83 AND -- join c to lastprodsn
84 c.ol_oh_glbl_id = lastprodsn.oli_ol_oh_glbl_id(+)
85 AND c.ol_seq = lastprodsn.oli_ol_seq(+)
86 AND c.ol_sub_seq = lastprodsn.oli_ol_sub_seq(+)
87 AND c.seq = lastprodsn.oli_seq(+)
88 AND -- join lastprodsn to k to get serial number for last product/serial number processed
89 lastprodsn.sm_glbl_id = h.glbl_id(+)
90 AND -- join lastprodsn to e to go get all the UUT ids for this OLI + Product # + Serial #
91 lastprodsn.oli_ol_oh_glbl_id = e.oli_ol_oh_glbl_id(+)
92 AND lastprodsn.oli_ol_seq = e.oli_ol_seq(+)
93 AND lastprodsn.oli_ol_sub_seq = e.oli_ol_sub_seq(+)
94 AND lastprodsn.oli_seq = e.oli_seq(+)
95 AND lastprodsn.pm_mstr_id = e.pm_mstr_id(+)
96 AND lastprodsn.sm_glbl_id = e.sm_glbl_id(+)
97 AND --join e to f to get UUT details for the good OLI-Product-SN combos
98 e.uut_glbl_id = f.glbl_id(+)
99 AND -- join f to g to get the voided parameter
100 f.glbl_id = g.uut_glbl_id(+)
101 AND -- join c to j to get the option codes for the product number (parameter 2070)
102 c.ol_oh_glbl_id = j.ol_oh_glbl_id(+)
103 AND c.ol_seq = j.ol_seq(+)
104 AND c.ol_sub_seq = j.ol_sub_seq(+)
105 AND c.seq = j.seq(+)
106 AND j.par_mstr_id(+) = 2070
107 AND j.VALUE(+) IS NOT NULL
108 AND -- un-voided packages only
109 g.par_mstr_id(+) = 1003
110 AND (g.uut_glbl_id IS NULL OR g.VALUE = 'N')
111 /* AND -- 1003 = package void status parameter
112 g.VALUE(+) = 'N' */
113 GROUP BY a.lcl_id,
114 b.seq,
115 b.sub_seq,
116 c.seq,
117 c.olig_group_id,
118 a.closed_date,
119 a.modified_date,
120 a.received_date,
121 a.status,
122 c.tag,
123 c.special_tag,
124 h.fmly_serial_id,
125 d.allocation_timestamp,
126 lastprodsn.pm_mstr_id,
127 b.CEP,
128 j.VALUE,
129 a.PO
130 /
SQL>=================
explain plan:::
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 82182 | 29M| | 160K (2)| 00:32:09 |
| 1 | HASH GROUP BY | | 82182 | 29M| 30M| 160K (2)| 00:32:09 |
| 2 | NESTED LOOPS OUTER | | 82182 | 29M| | 154K (2)| 00:30:51 |
| 3 | NESTED LOOPS OUTER | | 82182 | 26M| | 145K (2)| 00:29:12 |
|* 4 | HASH JOIN | | 82182 | 23M| 10M| 137K (2)| 00:27:33 |
| 5 | TABLE ACCESS FULL | ORDR_HDRS | 159K| 8716K| | 397 (4)| 00:00:05 |
|* 6 | HASH JOIN | | 89664 | 20M| 15M| 135K (2)| 00:27:09 |
| 7 | TABLE ACCESS FULL | ORDR_LNS | 506K| 9882K| | 688 (5)| 00:00:09 |
|* 8 | HASH JOIN RIGHT OUTER | | 89424 | 19M| 17M| 133K (2)| 00:26:39 |
| 9 | TABLE ACCESS FULL | OMAR_TRACK_MAPS | 567K| 10M| | 725 (5)| 00:00:09 |
|* 10 | FILTER | | | | | | |
|* 11 | HASH JOIN RIGHT OUTER | | 89424 | 17M| 4440K| 130K (2)| 00:26:09 |
|* 12 | TABLE ACCESS FULL | UUT_PARAMS | 133K| 2869K| | 3608 (7)| 00:00:44 |
|* 13 | HASH JOIN RIGHT OUTER | | 3244K| 563M| 85M| 96934 (3)| 00:19:24 |
| 14 | TABLE ACCESS FULL | UUTS | 2247K| 60M| | 4893 (4)| 00:00:59 |
|* 15 | HASH JOIN RIGHT OUTER | | 3244K| 476M| 239M| 62078 (3)| 00:12:25 |
| 16 | TABLE ACCESS FULL | SERIAL_PROD_UUT_MAPS | 3639K| 197M| | 6481 (4)| 00:01:18 |
|* 17 | HASH JOIN RIGHT OUTER | | 3244K| 300M| | 26716 (4)| 00:05:21 |
| 18 | VIEW | | 1 | 48 | | 18639 (4)| 00:03:44 |
|* 19 | FILTER | | | | | | |
| 20 | HASH GROUP BY | | 1 | 85 | | 18639 (4)| 00:03:44 |
|* 21 | HASH JOIN | | 308K| 25M| 40M| 18587 (4)| 00:03:44 |
|* 22 | TABLE ACCESS FULL| SERIAL_PROD_UUT_MAPS | 1060K| 28M| | 6520 (5)| 00:01:19 |
|* 23 | TABLE ACCESS FULL| SERIAL_PROD_UUT_MAPS | 1060K| 57M| | 6520 (5)| 00:01:19 |
| 24 | TABLE ACCESS FULL | ORDR_LN_ITMS | 3244K| 151M| | 8011 (4)| 00:01:37 |
|* 25 | TABLE ACCESS BY INDEX ROWID | ORDR_LN_PARAMS | 1 | 35 | | 1 (0)| 00:00:01 |
|* 26 | INDEX RANGE SCAN | OLP_OL_FK_I | 1 | | | 1 (0)| 00:00:01 |
| 27 | TABLE ACCESS BY INDEX ROWID | SERIAL_MSTRS | 1 | 37 | | 1 (0)| 00:00:01 |
|* 28 | INDEX RANGE SCAN | SM_PK | 1 | | | 1 (0)| 00:00:01 |
Predicate Information (identified by operation id):
4 - access("A"."GLBL_ID"="B"."OH_GLBL_ID")
6 - access("B"."OH_GLBL_ID"="C"."OL_OH_GLBL_ID" AND "B"."SEQ"="C"."OL_SEQ" AND
"B"."SUB_SEQ"="C"."OL_SUB_SEQ")
8 - access("C"."OTM_TRACK_ID"="D"."TRACK_ID"(+))
10 - filter("G"."UUT_GLBL_ID" IS NULL OR "G"."VALUE"='N')
11 - access("F"."GLBL_ID"="G"."UUT_GLBL_ID"(+))
12 - filter("G"."PAR_MSTR_ID"(+)=1003)
13 - access("E"."UUT_GLBL_ID"="F"."GLBL_ID"(+))
15 - access("LASTPRODSN"."OLI_OL_OH_GLBL_ID"="E"."OLI_OL_OH_GLBL_ID"(+) AND
"LASTPRODSN"."OLI_OL_SEQ"="E"."OLI_OL_SEQ"(+) AND "LASTPRODSN"."OLI_OL_SUB_SEQ"="E"."OLI_OL_SUB_SEQ"(+)
AND "LASTPRODSN"."OLI_SEQ"="E"."OLI_SEQ"(+) AND "LASTPRODSN"."PM_MSTR_ID"="E"."PM_MSTR_ID"(+) AND
"LASTPRODSN"."SM_GLBL_ID"="E"."SM_GLBL_ID"(+))
17 - access("C"."OL_OH_GLBL_ID"="LASTPRODSN"."OLI_OL_OH_GLBL_ID"(+) AND
"C"."OL_SEQ"="LASTPRODSN"."OLI_OL_SEQ"(+) AND "C"."OL_SUB_SEQ"="LASTPRODSN"."OLI_OL_SUB_SEQ"(+) AND
"C"."SEQ"="LASTPRODSN"."OLI_SEQ"(+))
19 - filter("X"."UUT_GLBL_ID"=MAX("UUT_GLBL_ID"))
21 - access("OLI_OL_OH_GLBL_ID"="X"."OLI_OL_OH_GLBL_ID" AND "OLI_OL_SEQ"="X"."OLI_OL_SEQ" AND
"OLI_OL_SUB_SEQ"="X"."OLI_OL_SUB_SEQ" AND "OLI_SEQ"="X"."OLI_SEQ")
22 - filter("OLI_OL_OH_GLBL_ID" IS NOT NULL AND "OLI_OL_SEQ" IS NOT NULL AND "OLI_SEQ" IS NOT NULL AND
"OLI_OL_SUB_SEQ" IS NOT NULL)
23 - filter("X"."OLI_OL_OH_GLBL_ID" IS NOT NULL AND "X"."OLI_OL_SEQ" IS NOT NULL AND "X"."OLI_SEQ" IS
NOT NULL AND "X"."OLI_OL_SUB_SEQ" IS NOT NULL)
25 - filter("J"."PAR_MSTR_ID"(+)=2070 AND "J"."VALUE"(+) IS NOT NULL AND "C"."SEQ"="J"."SEQ"(+))
26 - access("C"."OL_OH_GLBL_ID"="J"."OL_OH_GLBL_ID"(+) AND "C"."OL_SEQ"="J"."OL_SEQ"(+) AND
"C"."OL_SUB_SEQ"="J"."OL_SUB_SEQ"(+))
28 - access("LASTPRODSN"."SM_GLBL_ID"="H"."GLBL_ID"(+))
SQL>mod. action : adding tags , is that so difficult ? -
What will be the query for the below stated problem..??
Dear Sir
I want that in Incoming payment after selecting a Customer when we right click and select payment means under checks tab the bank details of that customer should be there i.e. According to Bank Code its Branch and Account no be shown with the help of a query. If anyone knows the query for this please let me know...Hello jyotasna ,
Let me try explain
SAP Process :-
When you make incoming payment with Cheque or bank then this is not complete sale cycle.
Bank Offset Account Debit
Customer Account Credit
You should make deposit(Banking>Incoming Payment>Deposit) for which you have made incoming payment.and here we put all info for bank account
Bank Account Debit
Bank Offset account Credit
Why :-
Suppose your client said that he deposit your cheque in bank in this date but due same bake issue or cheque issue the same cheque deposited in next day.
In this senario if i made this entry in SAP then we need to modify it based on Bank Reconciliation Statement(BRS)
We also have bank reconciliation set for same
Is there any confusion ?
Thanks
Manvendra Singh Niranjan
Edited by: Manvendra Singh Niranjan on Jul 13, 2011 1:10 PM -
Hi Guys,
What is the query for Accounts Payable Trial Balance (APXTRBAL) in 11.5.10?
I have to write an AP Invoice Aging Report in Discoverer to show all unpaid invoices that have been transferred into GL... Business wants it to match one-to-one with the AP Trial Balance standard report...
Business wants to run the report for any date in a past...
The report has two parameters:
As Of Date - the same as As of Date for the AP Trial Report
Trial Balance Run Date - the date when Trial Balance was run...
Conditions are:
TRUNC(Invoice Date) <=TRUNC(NVL(TO_DATE(:As Of Date),SYSDATE))
TRUNC(NVL(Payment Date,'01-JAN-5000')) > TRUNC(NVL(TO_DATE(:As Of Date),SYSDATE))
TRUNC(Invoice Creation Date) <= TRUNC(NVL(TO_DATE(:Trial Balance Run Date),SYSDATE))
Distr Accounting Date <= TRUNC(NVL(TO_DATE(:As Of Date),SYSDATE))
NVL(Distr Creation Date,Invoice Creation Date) <= TRUNC(NVL(TO_DATE(:Trial Balance Run Date),SYSDATE))
Show_Flag = 'YES', where:
Show_Flag = CASE WHEN ( NVL(Cancelled Date,'01-JAN-1901') > NVL(:As Of Date,SYSDATE) AND NVL(Inv Amount Aud,0) = 0 ) THEN 'YES' ELSE ( CASE WHEN NVL(Inv Amount Aud,0) = 0 THEN 'NO' ELSE 'YES' END ) END
There is a difference between the logic of my report, and the logic of AP Trial Balance...
Could you please advise what I'm missing?
Thanks,
IanaWhat is the query for Accounts Payable Trial Balance (APXTRBAL) in 11.5.10? You can get the code by opening the report in Reports Builder and get the query.
Or, enable trace/debug as per (FAQ: Common Tracing Techniques within the Oracle Applications 11i/R12 [ID 296559.1]).
Thanks,
Hussein -
How to improve the performance of the query
Hi,
Help me by giving tips how to improve the performance of the query. Can I post the query?
SureshBelow is the formatted query and no wonder it is taking lot of time. Will give you a list of issues soon after analyzing more. Till then understand the pitfalls yourself from this formatted query.
SELECT rt.awb_number,
ar.activity_id as task_id,
t.assignee_org_unit_id,
t.task_type_code,
ar.request_id
FROM activity_task ar,
request_task rt,
task t
WHERE ar.activity_id =t.task_id
AND ar.request_id = rt.request_id
AND ar.complete_status != 'act.stat.closed'
AND t.assignee_org_unit_id in (SELECT org_unit_id
FROM org_unit
WHERE org_unit_id in (SELECT oo.org_unit_id
FROM org_unit oo
WHERE oo.org_unit_id='3'
OR oo.parent_id ='3'
OR parent_id in (SELECT oo.org_unit_id
FROM org_unit oo
WHERE oo.org_unit_id='3'
OR oo.parent_id ='3'
AND has_queue=1
AND ar.parent_task_id not in (SELECT tt.task_id
FROM task tt
WHERE tt.assignee_org_unit_id in (SELECT org_unit_id
FROM org_unit
WHERE org_unit_id in (SELECT oo.org_unit_id
FROM org_unit oo
WHERE oo.org_unit_id='3'
OR oo.parent_id ='3'
OR parent_id in (SELECT oo.org_unit_id
FROM org_unit oo
WHERE oo.org_unit_id='3'
OR oo.parent_id ='3'
AND has_queue=1
AND rt.awb_number is not null
ORDER BY rt.awb_numberCheers
Sarma. -
Issue While executing the Query for Pagination using ROWNUM with like
Issue While executing the Query for Pagination using ROWNUM with like.
Database is Oracle11G.
Oracle Database Table contains 8-9 lakh records
1) SQL equal (=)
SELECT /*+ FIRST_ROWS(n) */ ROWNUM RNUM, A.* FROM LINE A
WHERE A.REFERENCE = 'KMF22600920'
Execution Time:- 0.00869245 seconds
Returns 2 resultsets
2) SQL like (one %)
SELECT /*+ FIRST_ROWS(n) */ ROWNUM RNUM, A.* FROM LINE A
WHERE A.REFERENCE = 'KMF22600920%'
Execution Time:- 0.01094301 seconds
Returns 2 resultsets
3) SQL like (two%)
SELECT /*+ FIRST_ROWS(n) */ ROWNUM RNUM, A.* FROM LINE A
WHERE A.REFERENCE like '%KMF22600920%'
Execution Time:- 6.43989658 seconds
Returns 2 resultsets
In Pagination, we are using Modified version of SQL Query 3) with ROWNUM as mentioned below :-
4) SELECT * FROM (
SELECT /*+ FIRST_ROWS(n) */ ROWNUM RNUM, A.* FROM LINE A
WHERE REFERENCE like '%KMF22600920%' AND ROWNUM <= 20 ) WHERE RNUM > 0
Execution Time:- Infinite
ResultSets:- No as execution time is infinite
a) Instead of like if we use = in the above query it is returning the 2 resultsets (execution time 0.02699282 seconds)
b) Instead of two % in the above query, if use one example REFERENCE like 'KMF22600920%' it is returning the 2 resultsets (execution time 0.03313019 seconds)
Issue:- When using two % in like in the above query i.e. REFERENCE like '%KMF22600920%' AND ROWNUM <= 20 ) , it is going to infinite.
Could you please let us know what is the issue with two % used in like and rownum
5) Modified version of Option1 query (move out the RNUM condition AND RNUM <= 20)
SELECT * FROM (
SELECT /*+ FIRST_ROWS(n) */ ROWNUM RNUM, A.* FROM LINE A
WHERE REFERENCE like '%KMF22600920%' ) WHERE RNUM > 0 AND RNUM <= 20
Execution Time:- 7.41368914 seconds
Returns 2 resultsets
Is the above query is best optimized query which should be used for the Pagination or still can improve on this ?This would be easier to diagnose if there was an explain plan posted for the 'good' and 'bad' queries. Generally speaking using '%' on both sides precludes the use of any indexes.
-
While trying to download Itunes on my lenovo laptop it tells me in an error box the following : " this installation package could not be opened verify that it exsist or contact the vendor for more info" what did i do?
Perhaps the answer provided for this problem in Microsoft's forums will help.
Good luck. -
Can anyone share the query for inventory aging report
Is there any standard reports for inventory aging in oracle ebs 12.1.3 ....... If not can anyone share the query for inventory aging report
Hi,
It may not be so simple as you are trying to reproduce the historical value. I believe you have to create a temporary table first. Or you may use Command feather to get the required data in advance.
Thanks,
Gordon -
Need to install only the query for fi account receivables standard data ?
Hi all,
I need to insall only the query for the standard business content for fi_ar in bw 3.5 ?
i have selected the cube and then in grouping i have selected data flow afterwards only.
And i have selected the queries only. but the cube is selected again. Should i uncheck the cube and install only the queries and transport it?
Pls guide me on this!!
Thanks
PoojaHi,
If the required cube is already avaialble and continue with the existing design, you can uncheck the cube and install only queries. Check all the prerequisites before installing queries like used infoobjects, other targets if any.
Hope this helps,
Regards,
Rama Murthy. -
Pls help me to modify the query for performance improvement
Hi,
I have the below initialization
DECLARE @Active bit =1 ;
Declare @id int
SELECT @Active=CASE WHEN id=@id and [Rank] ='Good' then 0 else 1 END FROM dbo.Students
I have to change this query in such a way that the conditions id=@id and [Rank] ='Good' should go to the where condition of the query. In that case, how can i use Case statement to retrieve 1 or 0? Can you please help me to modify this initialization?I dont understand your query...May be below? or provide us sample data and your output...
SELECT * FROM dbo.students
where @Active=CASE
WHEN id=@id and rank ='Good' then 0 else 1 END
But, I doubt you will have performance improvement here?
Do you have index on id?
If you are looking for getting the data for @ID with rank ='Good' then use the below:Make sure, you have index on id,rank combination.
SELECT * FROM dbo.students
where id=@id
and rank ='Good' -
Hello Guys,
iam having performance problem with query .when i run the the query with intial variables its displaying report quickly but when i go drilling with filter values its taking 10 minutes to display report.can anybody suggest me possible solutions for the performance improvement.
Regards
PriyaHi Priya,
First, you have to check what is causing the performance issue. You can do this by running the query in transaction RSRT. Execute the query in debug mode with the option "Display Statistics Data". You can navigate the query as you would normally. After that, check the statistics information and see what causes the performance issue. My guess is that you need to build an aggregate.
If rhe Data Manager time is high (a large % of the total runtime) and the ratio of the number of records selected VS the number of records transfered is high (e.g. > 10), then try to build an aggregate to help on the performance. To check for aggregate suggestions, run RSRT again with the option "Display Aggregates Found". It will show you what characteristics and characteristics selections would help (note that the suggestion might not always be the optimal one).
If OLAP Data Transfer time is high, then try optimizing the query design (e.g. try reducing the amount of restricted KFs or try calculating some KFs during the data flow instead of calculating them in the query).
Hope this helps. -
Poor Performance of the query.
Hi all,
i am using this query
select address1,address2,address3,city,place,pincode,siteid,bpcnum_0, contactname,fax,mobile,phone,website
from (select address1,address2,address3,city,place,pincode,siteid,bpcnum_0, contactname,fax,mobile,phone,website,
row_number() over (partition by contactname, address1
order by contactname, address1) as rn
from vw_sub_cl_add1 where siteid=10 and bpcnum_0 = '0063') emp where rn =1I used explain plan for the query the result is
Plan hash value: 3976107967
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Inst |IN-OUT|
| 0 | SELECT STATEMENT | | | | 0 (0)| | |
| 1 | REMOTE | | | | | INFO | R->S |
8 rows returned in 0.04 seconds but, actually the query return 10 rows.
the view "vw_sub_cl_add1" is created using database links(remote database server).
this query i am using in for loop to retrieve the records and print it one by one.
The problem is : The perfomance of the query is so poor. it takes 1.08 sec to display all the records.
what are the steps i should do to minimize the retrival time.?
Thanks in advance
bye
SrikaviSince this is query that is processed completely on the remote site, there are at least two potential issues that you should check if you don't want to use the "materialized view" approach:
1. The time it takes to transport the result set to your local database, i.e. potential network issues
2. The time it takes to process the query on the remote site
Since you're only fetching 10 rows - if I understand you correctly - the first point shouldn't be an issue in your case.
If you have suitable access to the remote site you would need to generate an execution plan of the "local" version of the query by logging directly into the remote size to find out why it takes longer than you expect. Probably it's missing some indexes if the number of rows to process should be only a few and you expect it to return more quickly.
Here are simple instructions how to generate a meaningful execution plan if you want to post it here:
Could you please post an properly formatted explain plan output using DBMS_XPLAN.DISPLAY including the "Predicate Information" section below the plan to provide more details regarding your statement. Please use the \[code\] and \[code\] tags to enhance readability of the output provided:
In SQL*Plus:
SET LINESIZE 130
EXPLAIN PLAN FOR <your statement>;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);Note that the package DBMS_XPLAN.DISPLAY is only available from 9i on.
In previous versions you could run the following in SQL*Plus (on the server) instead:
@?/rdbms/admin/utlxplsA different approach in SQL*Plus:
SET AUTOTRACE ON EXPLAIN
<run your statement>;will also show the execution plan.
In order to get a better understanding where your statement spends the time you might want to turn on SQL trace as described here:
[When your query takes too long|http://forums.oracle.com/forums/thread.jspa?threadID=501834]
and post the "tkprof" output here, too.
Regards,
Randolf
Oracle related stuff blog:
http://oracle-randolf.blogspot.com/
SQLTools++ for Oracle (Open source Oracle GUI for Windows):
http://www.sqltools-plusplus.org:7676/
http://sourceforge.net/projects/sqlt-pp/
Maybe you are looking for
-
Why am I having problems with my memory on my 3GS after downloading os10.5 upgrade?
Ever since we upgraded to the latest OS, the memory on my 3GS is low. Everything moves so slow when surfing the net or on social networking sites.
-
Using windows from boot camp on parallels
i would like to switch from bootcamp to parallels. is there some way that i could use the windows that came with boot camp windows after i switch or do i have to buy a new one?
-
How to disable heading sorting arrows in WAD Report?
Is there any way to disable the automatic heading arrows used to sort the columns in a WAD Table report? I have tried looking in enhanced context menu with no luck, any help will be apreciated, DavidG
-
Error during post-installation step of UR4 for SCSM 2012 R2
Hello experts, When attempting to execute the process documented in the "Resynchronize System Center Operations Manager mount point data" section of the UR4 installation instructions, we run into the following error. Has anyone else encountered
-
Anyone knows how to use STARFIRE?
I got problem ro manipulate the transform group got from the getModel() method. It turn out that all the methods such as setScale() and rotX() do not work in such TransformGroup. My code is as follows: public TransformGroup load(String _filename) thr