Tune this query
Hello All,
I have the following view, can there be any better way to write this sql
Create View Registry_Submitted_Items_View
AS
select SPE_Application_ID as Item_ID,
SPE_Application_NM as Item_NM,
Administrative_Comment_TXT as Admin_Comment_TXT,
sa.Create_DT as Submit_DT,
sa.Created_By as User_CD,
ris.Registry_Item_Status_Type_Nm as Status
from TRI_SPE_Application as sa,
TRI_Registry_Item_Status_Type as ris
where sa.RIST_ID = ris.RIST_ID
union
select SPE_Element_ID as Item_ID,
SPE_Element_NM as Item_NM,
Administrative_Comment_TXT as Admin_Comment_TXT,
se.Create_DT as Submit_DT,
se.Created_By as User_CD,
ris.Registry_Item_Status_Type_Nm as Status
from TRI_SPE_Element as se,
TRI_Registry_Item_Status_Type as ris
where se.RIST_ID = ris.RIST_ID
union
select Element_Set_ID as Item_ID,
Element_Set_NM as Item_NM,
Administrative_Comment_TXT as Admin_Comment_TXT,
es.Create_DT as Submit_DT,
es.Created_By as User_CD,
ris.Registry_Item_Status_Type_Nm as Status
from TRI_Element_Set as es,
TRI_Registry_Item_Status_Type as ris
where es.RIST_ID = ris.RIST_ID
Here's another method which you can give it a try :
SQL> select * from a;
RIST_ID
5
10
50
99
4
SQL> select * from b1;
no rows selected
SQL> select * from c1;
RIST_ID
11
19
21
SQL> select * from d1;
RIST_ID
11
5
101
SQL> select * from e1;
no rows selected
In the above example,
d1 represents : Table TRI_Registry_Item_Status_Type
a : Table TRI_SPE_Application
b1 : Table TRI_SPE_Element
c1 : Table TRI_Element_Set
e1 : Output Table < View in your case >
--- SQL Script ---
Select Case Rn
When 1 Then
Decode(aritsd, Null, Decode(britsd, Null, critsd, britsd), aritsd)
When 2 Then
Decode(aritsd, Null, Decode(britsd, Null, critsd, britsd), aritsd)
When 3 Then
Decode(aritsd, Null, Decode(britsd, Null, critsd, britsd), aritsd)
Else Null
End Case
From ( Select RowNum Rn
,a.rist_id aritsd
,b1.rist_id britsd
,c1.rist_id critsd
From c1
,b1
,a
,d1
Where d1.rist_id = a.rist_id (+)
And d1.rist_id = b1.rist_id(+)
And d1.rist_id = c1.rist_id(+)
Where ( aritsd Is Not Null
Or britsd Is Not Null
Or critsd Is Not Null
SQL> select * from e1;
RITSD
5
11
-- Shailender Mehta --
Similar Messages
-
Hi,
I'm using below query in procedure.It's taking more more time can some one help to tune this query or advice to rewrite the query.
Databse :10.1
SELECT 'Reading Comprehension' TEST_NAME,T.TEST_END_DATE TEST_SESSION_DATE,
C.POOL_VERSION_ID, I.CREATED_ON POOL_CREATED_DT,
C.ITEM_ID, C.ITEM_RESPONSE_ID, S.STUDENT_ID_PK, C.RESPONSE_KEY, C.IS_CORRECT RESPONSE_IS_CORRECT,
T.SCORE SCALE_SCORE, C.RESPONSE_DURATION, P.ITEM_KEY,
T.TEST_SESSION_DETAIL_ID, SYSDATE CREATED_ON
-- BULK COLLECT INTO TV_PSYCHO_DET
FROM
CAT_ITEM_PARAMETER P, CAT_ITEM_USER_RESPONSE C, TEST_SESSION_DETAIL T,
TEST_SESSION S, ITEM_POOL_VERSION I, TEST_DETAIL D
,INSTITUTION E
WHERE TRUNC(T.TEST_END_DATE) BETWEEN TO_DATE('01-11-09','dd-mm-yy') AND TO_DATE('30-11-09','dd-mm-yy')
AND D.TEST_NAME = 'Reading Comprehension'
AND T.TEST_SESSION_STATUS_ID = 3
AND I.POOL_AVAILABILITY='Y'
AND P.PRETEST=0 AND C.RESTART_FLAG=0
AND T.TEST_DETAIL_ID = D.TEST_DETAIL_ID
AND S.TEST_SESSION_ID = T.TEST_SESSION_ID
AND C.TEST_SESSION_DETAIL_ID = T.TEST_SESSION_DETAIL_ID
AND S.INSTITUTION_ID=E.INSTITUTION_ID
AND SUBSTR(E.INSTITUTION_ID_DISPLAY,8,3) <> '000'
AND I.ITEM_ID = C.ITEM_ID
AND P.ITEM_ID = I.ITEM_ID;expln plan
Plan hash value: 3712814491
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart|
Pstop |
| 0 | SELECT STATEMENT | | 50857 | 7151K| 93382 (1)| 00:18:41 | |
|
|* 1 | FILTER | | | | | | |
|
|* 2 | HASH JOIN | | 50857 | 7151K| 93382 (1)| 00:18:41 | |
|
| 3 | PARTITION HASH ALL | | 2312 | 23120 | 25 (0)| 00:00:01 | 1 |
5 |
|* 4 | TABLE ACCESS FULL | CAT_ITEM_PARAMETER | 2312 | 23120 | 25 (0)| 00:00:01 | 1 |
5 |
|* 5 | HASH JOIN | | 94938 | 12M| 93356 (1)| 00:18:41 | |
|
|* 6 | TABLE ACCESS FULL | ITEM_POOL_VERSION | 9036 | 132K| 30 (0)| 00:00:01 | |
|
|* 7 | TABLE ACCESS BY GLOBAL INDEX ROWID | CAT_ITEM_USER_RESPONSE | 9 | 279 | 18 (0)| 00:00:01 | ROWID |
ROWID |
| 8 | NESTED LOOPS | | 45349 | 5270K| 93325 (1)| 00:18:40 | |
|
|* 9 | HASH JOIN | | 4923 | 423K| 11377 (1)| 00:02:17 | |
|
|* 10 | INDEX FAST FULL SCAN | INSTI_ID_NAME_COUN_DISP_IDX | 8165 | 111K| 18 (0)| 00:00:01 | |
|
|* 11 | HASH JOIN | | 4923 | 355K| 11359 (1)| 00:02:17 | |
|
|* 12 | TABLE ACCESS BY GLOBAL INDEX ROWID| TEST_SESSION_DETAIL | 4107 | 148K| 6804 (1)| 00:01:22 | ROWID |
ROWID |
| 13 | NESTED LOOPS | | 4923 | 278K| 6806 (1)| 00:01:22 | |
|
|* 14 | INDEX RANGE SCAN | TEST_DETAIL_AK_1 | 1 | 21 | 2 (0)| 00:00:01 | |
|
|* 15 | INDEX RANGE SCAN | TEST_SESSION_DETAIL_FK2_I | 39737 | | 102 (0)| 00:00:02 | |
|
| 16 | PARTITION HASH ALL | | 1672K| 25M| 4546 (1)| 00:00:55 | 1 |
5 |
| 17 | TABLE ACCESS FULL | TEST_SESSION | 1672K| 25M| 4546 (1)| 00:00:55 | 1 |
5 |
|* 18 | INDEX RANGE SCAN | CAT_ITEM_USER_RESP_IDX1 | 18 | | 3 (0)| 00:00:01 | |
|
Predicate Information (identified by operation id):
1 - filter(TO_DATE('01-11-09','dd-mm-yy')<=TO_DATE('30-11-09','dd-mm-yy'))
2 - access("P"."ITEM_ID"="I"."ITEM_ID")
4 - filter("P"."PRETEST"=0)
5 - access("I"."ITEM_ID"="C"."ITEM_ID")
6 - filter("I"."POOL_AVAILABILITY"='Y')
7 - filter(TO_NUMBER("C"."RESTART_FLAG")=0)
9 - access("S"."INSTITUTION_ID"="E"."INSTITUTION_ID")
10 - filter(SUBSTR("E"."INSTITUTION_ID_DISPLAY",8,3)<>'000')
11 - access("S"."TEST_SESSION_ID"="T"."TEST_SESSION_ID")
12 - filter(TRUNC(INTERNAL_FUNCTION("T"."TEST_END_DATE"))>=TO_DATE('01-11-09','dd-mm-yy') AND "T"."TEST_SESSION_STATUS_ID"=3
AND TRUNC(INTERNAL_FUNCTION("T"."TEST_END_DATE"))<=TO_DATE('30-11-09','dd-mm-yy'))
14 - access("D"."TEST_NAME"='Reading Comprehension')
15 - access("T"."TEST_DETAIL_ID"="D"."TEST_DETAIL_ID")
18 - access("C"."TEST_SESSION_DETAIL_ID"="T"."TEST_SESSION_DETAIL_ID")
43 rows selected.Edited by: user575115 on Dec 18, 2009 12:31 AMWhen you see something like ...
7 - filter(TO_NUMBER("C"."RESTART_FLAG")=0) It means that Oracle had to do a conversion for you since you aren't using the proper data type in your query.
That would mean IF there is an index on that column, it won't be useable... -
Sql Query Tuning. Please help me to tune this query
Hi All ,
I have this problematic Sql . It is taking huge time to execute. It contains a view CIDV, which i think is the bottleneck.
I have pasted the query below. I will be pasting TKPROF and explain plan for the same. Please advice me to tune this query.
SELECT GCC.SEGMENT1 || '.' || GCC.SEGMENT2 || '.' || GCC.SEGMENT3 || '.' ||
GCC.SEGMENT4 || '.' || GCC.SEGMENT5 || '.' || GCC.SEGMENT6 || '.' ||
GCC.SEGMENT7 || '.' || GCC.SEGMENT8 || '.' || GCC.SEGMENT9 OFFSET_ACCOUNT,
OOD.ORGANIZATION_CODE,
CIDV.SUBINVENTORY_CODE OFFSET_SUBINV,
MIL.SEGMENT1 || '.' || MIL.SEGMENT2 || '.' || MIL.SEGMENT3 || '.' ||
MIL.SEGMENT4 || '.' || MIL.SEGMENT5 OFFSET_LOCATOR,
CIDV.LAST_UPDATE_LOGIN
FROM APPS.CST_INV_DISTRIBUTION_V CIDV,
APPS.GL_CODE_COMBINATIONS GCC,
APPS.MTL_ITEM_LOCATIONS MIL,
APPS.ORG_ORGANIZATION_DEFINITIONS OOD
WHERE CIDV.TRANSACTION_ID = :B2
AND CIDV.PRIMARY_QUANTITY = (-1) * :B1
AND CIDV.REFERENCE_ACCOUNT = GCC.CODE_COMBINATION_ID
AND OOD.ORGANIZATION_ID = CIDV.ORGANIZATION_ID
AND MIL.INVENTORY_LOCATION_ID = CIDV.LOCATOR_ID
AND GCC.ACCOUNT_TYPE = 'A'****************
TKPROF
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 68337 10.32 10.32 0 0 0 0
Fetch 68337 229.75 936.36 58819 6743323 1121 68232
total 136675 240.07 946.69 58819 6743323 1121 68232
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: ALL_ROWS
Parsing user id: 203 (recursive depth: 1)
Number of plan statistics captured: 1
Rows (1st) Rows (avg) Rows (max) Row Source Operation
1 1 1 MERGE JOIN CARTESIAN (cr=102 pr=15 pw=0 time=193608 us cost=56 size=219 card=1)
1 1 1 NESTED LOOPS (cr=100 pr=15 pw=0 time=193483 us cost=53 size=219 card=1)
1 1 1 NESTED LOOPS (cr=99 pr=15 pw=0 time=193407 us cost=52 size=215 card=1)
1 1 1 NESTED LOOPS (cr=96 pr=15 pw=0 time=193378 us cost=51 size=190 card=1)
1 1 1 NESTED LOOPS (cr=93 pr=15 pw=0 time=193284 us cost=49 size=162 card=1)
1 1 1 NESTED LOOPS (cr=89 pr=14 pw=0 time=185515 us cost=46 size=138 card=1)
1 1 1 NESTED LOOPS (cr=85 pr=12 pw=0 time=157975 us cost=44 size=81 card=1)
1 1 1 NESTED LOOPS (cr=83 pr=12 pw=0 time=157925 us cost=43 size=73 card=1)
1 1 1 NESTED LOOPS (cr=81 pr=12 pw=0 time=157641 us cost=43 size=132 card=2)
1 1 1 VIEW CST_INV_DISTRIBUTION_V (cr=78 pr=12 pw=0 time=156386 us cost=41 size=118 card=2)
1 1 1 UNION-ALL (cr=78 pr=12 pw=0 time=156378 us)
0 0 0 NESTED LOOPS OUTER (cr=44 pr=9 pw=0 time=124997 us cost=20 size=291 card=1)
0 0 0 NESTED LOOPS (cr=44 pr=9 pw=0 time=124993 us cost=18 size=255 card=1)
0 0 0 NESTED LOOPS (cr=44 pr=9 pw=0 time=124990 us cost=18 size=251 card=1)
33 33 33 MERGE JOIN CARTESIAN (cr=25 pr=6 pw=0 time=98544 us cost=14 size=192 card=1)
1 1 1 NESTED LOOPS OUTER (cr=22 pr=5 pw=0 time=85754 us cost=12 size=156 card=1)
1 1 1 NESTED LOOPS (cr=19 pr=4 pw=0 time=79830 us cost=10 size=120 card=1)
1 1 1 NESTED LOOPS OUTER (cr=17 pr=4 pw=0 time=79813 us cost=9 size=113 card=1)
1 1 1 NESTED LOOPS (cr=15 pr=4 pw=0 time=79752 us cost=8 size=106 card=1)
1 1 1 NESTED LOOPS (cr=11 pr=2 pw=0 time=43120 us cost=6 size=93 card=1)
1 1 1 NESTED LOOPS (cr=7 pr=2 pw=0 time=43087 us cost=4 size=83 card=1)
1 1 1 NESTED LOOPS (cr=6 pr=2 pw=0 time=43072 us cost=4 size=80 card=1)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_MATERIAL_TRANSACTIONS (cr=5 pr=2 pw=0 time=43042 us cost=4 size=76 card=1)
1 1 1 INDEX UNIQUE SCAN MTL_MATERIAL_TRANSACTIONS_U1 (cr=4 pr=2 pw=0 time=43011 us cost=3 size=0 card=1)(object id 12484094)
1 1 1 INDEX UNIQUE SCAN MTL_TRANSACTION_TYPES_U1 (cr=1 pr=0 pw=0 time=20 us cost=0 size=764 card=191)(object id 9983)
1 1 1 INDEX UNIQUE SCAN MTL_TXN_SOURCE_TYPES_U1 (cr=1 pr=0 pw=0 time=7 us cost=0 size=54 card=18)(object id 9987)
1 1 1 INDEX UNIQUE SCAN MTL_SYSTEM_ITEMS_B_U1 (cr=4 pr=0 pw=0 time=27 us cost=2 size=736324450 card=73632445)(object id 12484155)
1 1 1 INDEX UNIQUE SCAN MTL_SYSTEM_ITEMS_TL_U1 (cr=4 pr=2 pw=0 time=36626 us cost=2 size=957481070 card=73652390)(object id 12484137)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=42 us cost=1 size=3290 card=470)
1 1 1 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=28 us cost=0 size=0 card=1)(object id 9847)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=12 us cost=1 size=3290 card=470)
1 1 1 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=7 us cost=0 size=0 card=1)(object id 9847)
0 0 0 INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=1 pw=0 time=5915 us cost=2 size=36 card=1)(object id 705891)
33 33 33 BUFFER SORT (cr=3 pr=1 pw=0 time=12713 us cost=12 size=36 card=1)
33 33 33 INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=1 pw=0 time=12582 us cost=2 size=36 card=1)(object id 705891)
0 0 0 TABLE ACCESS BY INDEX ROWID MTL_TRANSACTION_ACCOUNTS (cr=19 pr=3 pw=0 time=26591 us cost=4 size=59 card=1)
66 66 66 INDEX RANGE SCAN MTL_TRANSACTION_ACCOUNTS_N1 (cr=18 pr=2 pw=0 time=13607 us cost=3 size=0 card=3)(object id 12484127)
0 0 0 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=0 pr=0 pw=0 time=0 us cost=0 size=4 card=1)(object id 9847)
0 0 0 INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=0 pr=0 pw=0 time=0 us cost=2 size=36 card=1)(object id 705891)
1 1 1 NESTED LOOPS (cr=34 pr=3 pw=0 time=31269 us cost=21 size=288 card=1)
1 1 1 NESTED LOOPS (cr=30 pr=3 pw=0 time=31161 us cost=19 size=275 card=1)
1 1 1 NESTED LOOPS (cr=26 pr=3 pw=0 time=31105 us cost=17 size=265 card=1)
1 1 1 NESTED LOOPS (cr=25 pr=3 pw=0 time=31082 us cost=17 size=261 card=1)
1 1 1 NESTED LOOPS OUTER (cr=23 pr=3 pw=0 time=31027 us cost=16 size=254 card=1)
1 1 1 NESTED LOOPS (cr=21 pr=3 pw=0 time=30980 us cost=15 size=247 card=1)
1 1 1 NESTED LOOPS (cr=20 pr=3 pw=0 time=30957 us cost=15 size=243 card=1)
1 1 1 NESTED LOOPS OUTER (cr=19 pr=3 pw=0 time=30926 us cost=15 size=240 card=1)
1 1 1 NESTED LOOPS (cr=16 pr=3 pw=0 time=30389 us cost=13 size=204 card=1)
1 1 1 NESTED LOOPS (cr=11 pr=0 pw=0 time=665 us cost=9 size=131 card=1)
1 1 1 NESTED LOOPS OUTER (cr=8 pr=0 pw=0 time=306 us cost=7 size=95 card=1)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_TRANSACTION_ACCOUNTS (cr=5 pr=0 pw=0 time=37 us cost=5 size=59 card=1)
2 2 2 INDEX RANGE SCAN MTL_TRANSACTION_ACCOUNTS_N1 (cr=4 pr=0 pw=0 time=17 us cost=4 size=0 card=3)(object id 12484127)
1 1 1 INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=0 pw=0 time=216 us cost=2 size=36 card=1)(object id 705891)
1 1 1 INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=0 pw=0 time=352 us cost=2 size=36 card=1)(object id 705891)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_MATERIAL_TRANSACTIONS (cr=5 pr=3 pw=0 time=29716 us cost=4 size=73 card=1)
1 1 1 INDEX RANGE SCAN MTL_MATERIAL_TRANSACTIONS_N23 (cr=4 pr=3 pw=0 time=29588 us cost=3 size=0 card=1)(object id 12484133)
0 0 0 INDEX RANGE SCAN FND_LOOKUP_VALUES_U1 (cr=3 pr=0 pw=0 time=520 us cost=2 size=36 card=1)(object id 705891)
1 1 1 INDEX UNIQUE SCAN MTL_TXN_SOURCE_TYPES_U1 (cr=1 pr=0 pw=0 time=22 us cost=0 size=3 card=1)(object id 9987)
1 1 1 INDEX UNIQUE SCAN MTL_TRANSACTION_TYPES_U1 (cr=1 pr=0 pw=0 time=16 us cost=0 size=4 card=1)(object id 9983)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=34 us cost=1 size=7 card=1)
1 1 1 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=19 us cost=0 size=0 card=1)(object id 9847)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=44 us cost=1 size=7 card=1)
1 1 1 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=14 us cost=0 size=0 card=1)(object id 9847)
1 1 1 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=13 us cost=0 size=4 card=1)(object id 9847)
1 1 1 INDEX UNIQUE SCAN MTL_SYSTEM_ITEMS_B_U1 (cr=4 pr=0 pw=0 time=49 us cost=2 size=10 card=1)(object id 12484155)
1 1 1 INDEX UNIQUE SCAN MTL_SYSTEM_ITEMS_TL_U1 (cr=4 pr=0 pw=0 time=96 us cost=2 size=13 card=1)(object id 12484137)
1 1 1 TABLE ACCESS BY INDEX ROWID HR_ALL_ORGANIZATION_UNITS (cr=3 pr=0 pw=0 time=1246 us cost=1 size=7 card=1)
1 1 1 INDEX UNIQUE SCAN HR_ORGANIZATION_UNITS_PK (cr=2 pr=0 pw=0 time=24 us cost=0 size=0 card=1)(object id 250158)
1 1 1 INDEX UNIQUE SCAN HR_ALL_ORGANIZATION_UNTS_TL_PK (cr=2 pr=0 pw=0 time=275 us cost=0 size=7 card=1)(object id 689101)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_PARAMETERS (cr=2 pr=0 pw=0 time=38 us cost=1 size=8 card=1)
1 1 1 INDEX UNIQUE SCAN MTL_PARAMETERS_U1 (cr=1 pr=0 pw=0 time=15 us cost=0 size=0 card=1)(object id 9847)
1 1 1 TABLE ACCESS BY INDEX ROWID GL_CODE_COMBINATIONS (cr=4 pr=2 pw=0 time=27531 us cost=2 size=57 card=1)
1 1 1 INDEX UNIQUE SCAN GL_CODE_COMBINATIONS_U1 (cr=3 pr=1 pw=0 time=19925 us cost=1 size=0 card=1)(object id 51426)
1 1 1 TABLE ACCESS BY INDEX ROWID MTL_ITEM_LOCATIONS (cr=4 pr=1 pw=0 time=7758 us cost=3 size=24 card=1)
1 1 1 INDEX RANGE SCAN MTL_ITEM_LOCATIONS_U1 (cr=3 pr=0 pw=0 time=51 us cost=2 size=0 card=1)(object id 9761)
1 1 1 TABLE ACCESS BY INDEX ROWID HR_ORGANIZATION_INFORMATION (cr=3 pr=0 pw=0 time=85 us cost=2 size=28 card=1)
1 1 1 INDEX RANGE SCAN HR_ORGANIZATION_INFORMATIO_FK2 (cr=2 pr=0 pw=0 time=29 us cost=1 size=0 card=2)(object id 5379798)
1 1 1 TABLE ACCESS BY INDEX ROWID HR_ORGANIZATION_INFORMATION (cr=3 pr=0 pw=0 time=25 us cost=1 size=25 card=1)
1 1 1 INDEX RANGE SCAN HR_ORGANIZATION_INFORMATIO_FK2 (cr=2 pr=0 pw=0 time=11 us cost=1 size=0 card=1)(object id 5379798)
1 1 1 INDEX FULL SCAN GL_SETS_OF_BOOKS_U2 (cr=1 pr=0 pw=0 time=69 us cost=1 size=4 card=1)(object id 1380842)
1 1 1 BUFFER SORT (cr=2 pr=0 pw=0 time=110 us cost=55 size=0 card=1)
1 1 1 TABLE ACCESS FULL FND_PRODUCT_GROUPS (cr=2 pr=0 pw=0 time=59 us cost=3 size=0 card=1)
Elapsed times include waiting on following events:
Event waited on Times Max. Wait Total Waited
---------------------------------------- Waited ---------- ------------
library cache lock 2 0.00 0.00
library cache pin 2 0.00 0.00
Disk file operations I/O 249 0.00 0.00
db file sequential read 58819 2.61 714.28
gc cr grant 2-way 5198 0.16 4.52
gc current grant busy 1 0.00 0.00
KJC: Wait for msg sends to complete 517 0.00 0.05
library cache: mutex X 433 0.01 0.04
gc cr grant congested 28 0.08 0.18
latch: ges resource hash list 5 0.00 0.00
gc current block 2-way 513 0.11 0.61
gc current block congested 2 0.00 0.00
latch: gc element 16 0.00 0.01
latch: cache buffers chains 4 0.00 0.00
latch: object queue header operation 3 0.00 0.00
********************************************************************************Explain Plan for the query
SELECT STATEMENT, GOAL = ALL_ROWS Cost=56 Cardinality=1 Bytes=219
MERGE JOIN CARTESIAN Cost=56 Cardinality=1 Bytes=219
NESTED LOOPS Cost=53 Cardinality=1 Bytes=219
NESTED LOOPS Cost=52 Cardinality=1 Bytes=215
NESTED LOOPS Cost=51 Cardinality=1 Bytes=190
NESTED LOOPS Cost=49 Cardinality=1 Bytes=162
NESTED LOOPS Cost=46 Cardinality=1 Bytes=138
NESTED LOOPS Cost=44 Cardinality=1 Bytes=81
NESTED LOOPS Cost=43 Cardinality=1 Bytes=73
NESTED LOOPS Cost=43 Cardinality=2 Bytes=132
VIEW Object owner=APPS Object name=CST_INV_DISTRIBUTION_V Cost=41 Cardinality=2 Bytes=118
UNION-ALL
NESTED LOOPS OUTER Cost=20 Cardinality=1 Bytes=291
NESTED LOOPS Cost=18 Cardinality=1 Bytes=255
NESTED LOOPS Cost=18 Cardinality=1 Bytes=251
MERGE JOIN CARTESIAN Cost=14 Cardinality=1 Bytes=192
NESTED LOOPS OUTER Cost=12 Cardinality=1 Bytes=156
NESTED LOOPS Cost=10 Cardinality=1 Bytes=120
NESTED LOOPS OUTER Cost=9 Cardinality=1 Bytes=113
NESTED LOOPS Cost=8 Cardinality=1 Bytes=106
NESTED LOOPS Cost=6 Cardinality=1 Bytes=93
NESTED LOOPS Cost=4 Cardinality=1 Bytes=83
NESTED LOOPS Cost=4 Cardinality=1 Bytes=80
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_MATERIAL_TRANSACTIONS Cost=4 Cardinality=1 Bytes=76
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_MATERIAL_TRANSACTIONS_U1 Cost=3 Cardinality=1
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_TRANSACTION_TYPES_U1 Cost=0 Cardinality=191 Bytes=764
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_TXN_SOURCE_TYPES_U1 Cost=0 Cardinality=18 Bytes=54
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_SYSTEM_ITEMS_B_U1 Cost=2 Cardinality=73632445 Bytes=736324450
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_SYSTEM_ITEMS_TL_U1 Cost=2 Cardinality=73652390 Bytes=957481070
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_PARAMETERS Cost=1 Cardinality=470 Bytes=3290
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_PARAMETERS_U1 Cost=0 Cardinality=1
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_PARAMETERS Cost=1 Cardinality=470 Bytes=3290
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_PARAMETERS_U1 Cost=0 Cardinality=1
INDEX RANGE SCAN Object owner=APPLSYS Object name=FND_LOOKUP_VALUES_U1 Cost=2 Cardinality=1 Bytes=36
BUFFER SORT Cost=12 Cardinality=1 Bytes=36
INDEX RANGE SCAN Object owner=APPLSYS Object name=FND_LOOKUP_VALUES_U1 Cost=2 Cardinality=1 Bytes=36
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_TRANSACTION_ACCOUNTS Cost=4 Cardinality=1 Bytes=59
INDEX RANGE SCAN Object owner=INV Object name=MTL_TRANSACTION_ACCOUNTS_N1 Cost=3 Cardinality=3
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_PARAMETERS_U1 Cost=0 Cardinality=1 Bytes=4
INDEX RANGE SCAN Object owner=APPLSYS Object name=FND_LOOKUP_VALUES_U1 Cost=2 Cardinality=1 Bytes=36
NESTED LOOPS Cost=21 Cardinality=1 Bytes=288
NESTED LOOPS Cost=19 Cardinality=1 Bytes=275
NESTED LOOPS Cost=17 Cardinality=1 Bytes=265
NESTED LOOPS Cost=17 Cardinality=1 Bytes=261
NESTED LOOPS OUTER Cost=16 Cardinality=1 Bytes=254
NESTED LOOPS Cost=15 Cardinality=1 Bytes=247
NESTED LOOPS Cost=15 Cardinality=1 Bytes=243
NESTED LOOPS OUTER Cost=15 Cardinality=1 Bytes=240
NESTED LOOPS Cost=13 Cardinality=1 Bytes=204
NESTED LOOPS Cost=9 Cardinality=1 Bytes=131
NESTED LOOPS OUTER Cost=7 Cardinality=1 Bytes=95
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_TRANSACTION_ACCOUNTS Cost=5 Cardinality=1 Bytes=59
INDEX RANGE SCAN Object owner=INV Object name=MTL_TRANSACTION_ACCOUNTS_N1 Cost=4 Cardinality=3
INDEX RANGE SCAN Object owner=APPLSYS Object name=FND_LOOKUP_VALUES_U1 Cost=2 Cardinality=1 Bytes=36
INDEX RANGE SCAN Object owner=APPLSYS Object name=FND_LOOKUP_VALUES_U1 Cost=2 Cardinality=1 Bytes=36
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_MATERIAL_TRANSACTIONS Cost=4 Cardinality=1 Bytes=73
INDEX RANGE SCAN Object owner=INV Object name=MTL_MATERIAL_TRANSACTIONS_N23 Cost=3 Cardinality=1
INDEX RANGE SCAN Object owner=APPLSYS Object name=FND_LOOKUP_VALUES_U1 Cost=2 Cardinality=1 Bytes=36
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_TXN_SOURCE_TYPES_U1 Cost=0 Cardinality=1 Bytes=3
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_TRANSACTION_TYPES_U1 Cost=0 Cardinality=1 Bytes=4
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_PARAMETERS Cost=1 Cardinality=1 Bytes=7
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_PARAMETERS_U1 Cost=0 Cardinality=1
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_PARAMETERS Cost=1 Cardinality=1 Bytes=7
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_PARAMETERS_U1 Cost=0 Cardinality=1
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_PARAMETERS_U1 Cost=0 Cardinality=1 Bytes=4
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_SYSTEM_ITEMS_B_U1 Cost=2 Cardinality=1 Bytes=10
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_SYSTEM_ITEMS_TL_U1 Cost=2 Cardinality=1 Bytes=13
TABLE ACCESS BY INDEX ROWID Object owner=HR Object name=HR_ALL_ORGANIZATION_UNITS Cost=1 Cardinality=1 Bytes=7
INDEX UNIQUE SCAN Object owner=HR Object name=HR_ORGANIZATION_UNITS_PK Cost=0 Cardinality=1
INDEX UNIQUE SCAN Object owner=HR Object name=HR_ALL_ORGANIZATION_UNTS_TL_PK Cost=0 Cardinality=1 Bytes=7
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_PARAMETERS Cost=1 Cardinality=1 Bytes=8
INDEX UNIQUE SCAN Object owner=INV Object name=MTL_PARAMETERS_U1 Cost=0 Cardinality=1
TABLE ACCESS BY INDEX ROWID Object owner=GL Object name=GL_CODE_COMBINATIONS Cost=2 Cardinality=1 Bytes=57
INDEX UNIQUE SCAN Object owner=GL Object name=GL_CODE_COMBINATIONS_U1 Cost=1 Cardinality=1
TABLE ACCESS BY INDEX ROWID Object owner=INV Object name=MTL_ITEM_LOCATIONS Cost=3 Cardinality=1 Bytes=24
INDEX RANGE SCAN Object owner=INV Object name=MTL_ITEM_LOCATIONS_U1 Cost=2 Cardinality=1
TABLE ACCESS BY INDEX ROWID Object owner=HR Object name=HR_ORGANIZATION_INFORMATION Cost=2 Cardinality=1 Bytes=28
INDEX RANGE SCAN Object owner=HR Object name=HR_ORGANIZATION_INFORMATIO_FK2 Cost=1 Cardinality=2
TABLE ACCESS BY INDEX ROWID Object owner=HR Object name=HR_ORGANIZATION_INFORMATION Cost=1 Cardinality=1 Bytes=25
INDEX RANGE SCAN Object owner=HR Object name=HR_ORGANIZATION_INFORMATIO_FK2 Cost=1 Cardinality=1
INDEX FULL SCAN Object owner=GL Object name=GL_SETS_OF_BOOKS_U2 Cost=1 Cardinality=1 Bytes=4
BUFFER SORT Cost=55 Cardinality=1
TABLE ACCESS FULL Object owner=APPLSYS Object name=FND_PRODUCT_GROUPS Cost=3 Cardinality=1 -
Is there any way to tune this query? EXPLAIN PLAN included
DB version:10gR2
The below query was taking more than 3 seconds. The statistics are up to date for these tables. Is there any other way i could tune this query?
SELECT COUNT(1)
FROM
INVN_SCOPE_DTL, ship_dtl WHERE ship_dtl.WHSE = INVN_SCOPE_DTL.WHSE (+)
AND 'QC' = INVN_SCOPE_DTL.FROM_WORK_GRP (+)
AND 'MQN' = INVN_SCOPE_DTL.FROM_WORK_AREA (+)
AND ship_dtl.START_CURR_WORK_GRP = INVN_SCOPE_DTL.TO_WORK_GRP (+)
AND ship_dtl.START_CURR_WORK_AREA = INVN_SCOPE_DTL.TO_WORK_AREA (+)
AND ship_dtl.WHSE = '930' AND ship_dtl.OWNER_USER_ID = 'CTZDM'
OR ship_dtl.OWNER_USER_ID = '*'
AND ship_dtl.STAT_CODE >= '10'
AND ship_dtl.STAT_CODE <= '20'
ORDER BY ship_dtl.OWNER_USER_ID DESC,
ship_dtl.CURR_TASK_PRTY ASC, INVN_SCOPE_DTL.DISTANCE ASC, ship_dtl.RLS_DATE_TIME ASC, ship_dtl.TASK_ID ASC;
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
| 0 | SELECT STATEMENT | | 1 | 86 | 86 (2)|
| 1 | SORT AGGREGATE | | 1 | 86 | |
| 2 | NESTED LOOPS OUTER | | 898 | 77228 | 86 (2)|
| 3 | INLIST ITERATOR | | | | |
|* 4 | TABLE ACCESS BY INDEX ROWID| ship_dtl | 898 | 31430 | 85 (2)|
|* 5 | INDEX RANGE SCAN | ship_dtl_IND_4 | 2876 | | 1 (0)|
| 6 | TABLE ACCESS BY INDEX ROWID | INVN_SCOPE_DTL | 1 | 51 | 2 (50)|
PLAN_TABLE_OUTPUT
|* 7 | INDEX UNIQUE SCAN | PK_INVN_SCOPE_DTL | 1 | | |
Predicate Information (identified by operation id):
4 - filter("ship_dtl"."WHSE"='930' AND "ship_dtl"."STAT_CODE">=10 AND
"ship_dtl"."STAT_CODE"<=20)
5 - access("ship_dtl"."OWNER_USER_ID"='*' OR "ship_dtl"."OWNER_USER_ID"='CTZDM')
7 - access("INVN_SCOPE_DTL"."WHSE"(+)='930' AND
"INVN_SCOPE_DTL"."FROM_WORK_GRP"(+)='QC' AND "INVN_SCOPE_DTL"."FROM_WORK_AREA"(+)='MQN'
PLAN_TABLE_OUTPUT
AND "ship_dtl"."START_CURR_WORK_GRP"="INVN_SCOPE_DTL"."TO_WORK_GRP"(+) AND
"ship_dtl"."START_CURR_WORK_AREA"="INVN_SCOPE_DTL"."TO_WORK_AREA"(+))
filter("ship_dtl"."WHSE"="INVN_SCOPE_DTL"."WHSE"(+))
25 rows selected.William Robertson wrote:
I notice an OR predicate in the middle of some AND predicates without explicit bracketing. Are you sure it does what you think it does?I underline this point.
A conjuction (AND expression) has a higher priority and will be executed (logically) before the disjunction (OR expression)! So your select looks like this
SELECT COUNT(1)
FROM INVN_SCOPE_DTL, ship_dtl
WHERE
( ship_dtl.WHSE = INVN_SCOPE_DTL.WHSE (+)
AND 'QC' = INVN_SCOPE_DTL.FROM_WORK_GRP (+)
AND 'MQN' = INVN_SCOPE_DTL.FROM_WORK_AREA (+)
AND ship_dtl.START_CURR_WORK_GRP = INVN_SCOPE_DTL.TO_WORK_GRP (+)
AND ship_dtl.START_CURR_WORK_AREA = INVN_SCOPE_DTL.TO_WORK_AREA (+)
AND ship_dtl.WHSE = '930'
AND ship_dtl.OWNER_USER_ID = 'CTZDM'
OR ( ship_dtl.OWNER_USER_ID = '*'
AND ship_dtl.STAT_CODE >= '10'
AND ship_dtl.STAT_CODE <= '20'
;This might be want you want, but I doubt it very much. Please add parenthesis', to get it working the way it should be.
Edited by: Sven W. on Oct 16, 2008 3:25 PM -
How to tune this query for the improve performance ?
Hi All,
How to tune this query for the improve performance ?
select a.claim_number,a.pay_cd,a.claim_occurrence_number,
case
when sum(case
when a.payment_status_cd ='0'
then a.payment_est_amt
else 0
end
)=0
then 0
else (sum(case
when a.payment_status_cd='0'and a.payment_est_amt > 0
then a.payment_est_amt
else 0
end)
- sum(case
when a.payment_status_cd<>'0'
then a.payment_amt
else 0
end))
end as estimate
from ins_claim_payment a
where a.as_of_date between '31-jan-03' and '30-aug-06'
and ( a.data_source = '25' or (a.data_source between '27' and '29'))
and substr(a.pay_cd,1,1) IN ('2','3','4','8','9')
group by a.claim_number, a.pay_cd, a.claim_occurrence_number
Thank you,
MckaMcka
As well as EXPLAIN PLAN, let us know what proportion of rows are visited by this query. It may be that it is not using a full table scan when it should (or vice versa).
And of course we'd need to know what indexes are available, and how selective they are for the predicated you have in this query ...
Regards Nigel -
Please tune this query.
Hi Experts,
My below query is taking long time.
[code]SELECT FAX_LIST.*
FROM (SELECT /*+ use_nl(fax, src) */
ROW_NUMBER () OVER (ORDER BY fax.ID ASC NULLS FIRST) RN,
fax.ACCOUNT_TYPE,
fax.BU_FILE_LOCATION,
fax.COUNT_PAGES_RECEIVED,
NVL (fax.CUSTOMER_NAME, fax.SENDER_NAME) AS CUSTOMER_NAME,
fax.FAX_SOURCE,
fax.CUSTOMER_NUMBER,
fax.CUSTOMER_OMEGA_NUMBER,
fax.GENIFAX_RECIPIENT_ID,
fax.ID AS FAX_ID,
fax.DATE_RECEIVED AS FAX_RECEIVED,
fax.IS_LOCKED,
fax.LOCKED_BY,
fax.ORIGINATOR_CSI,
fax.MARGIN,
fax.PAYMENT_TYPE,
fax.PRIORITY_CODE,
fax.PRIORITY_VALUE,
FROM_TZ (fax.DATE_RECEIVED, 'UTC')
AT TIME ZONE fax.LOCAL_TZ_NAME
AS DATE_RECEIVED,
fax.SALES_PERSON,
fax.SENDER_EMAIL,
fax.SENDER_NAME,
fax.SUBJECT,
fax.WORKGROUP_ID,
fax.LOCKED_TIME,
src.DESCRIPTION,
src.FAX_NUMBER,
src.WORKFLOW_ID,
fax.CREATED_BY,
fax.CREATED_DATE,
fax.UPDATE_DATE,
fax.UPDATED_BY,
fax.RESERVED_BY,
fax.PRICE_TO_ORDER,
fax.SKU_COUNT_TO_ORDER,
NVL (ORL.GET_FTH_WTR (fax.LAST_TRANSITION_ID).CHANGED_BY,
CASE
WHEN fax.LAST_TRANSITION_ID IS NULL
AND fax.GENIFAX_RECIPIENT_ID IS NOT NULL
THEN
'ORL FEEDER'
ELSE
'Admin'
END)
AS LAST_USER,
FROM_TZ (
NVL (ORL.GET_FTH_WTR (fax.LAST_TRANSITION_ID).CHANGED_DATE,
fax.DATE_RECEIVED),
'UTC')
AT TIME ZONE fax.LOCAL_TZ_NAME
AS MOVE_DATETIME,
NVL (ORL.GET_FTH_WTR (fax.LAST_TRANSITION_ID).REASON,
'Reroute')
AS MOVE_REASON,
NVL (
(SELECT fw.DESCRIPTION
FROM ORL.WORKGROUP_TRANSITION wt, ORL.WORKGROUP fw
WHERE wt.ID =
ORL.GET_FTH_WTR (fax.LAST_TRANSITION_ID).WORKGROUP_TRANSITION_ID
AND fw.ID = wt.CURRENT_WORKGROUP_ID),
CASE
WHEN fax.LAST_TRANSITION_ID IS NULL
AND fax.GENIFAX_RECIPIENT_ID IS NOT NULL
THEN
'ORL FEEDER STAGING'
ELSE
'N/A'
END)
AS OLD_STATUS,
(SELECT MAX (PURCHASE_ORDER_NUMBER)
FROM ORL.FAX_OFFER_DETAIL
WHERE FAX_ID = fax.ID)
AS MAXPO,
(SELECT CASE COUNT (PURCHASE_ORDER_NUMBER)
WHEN 0 THEN NULL
ELSE COUNT (PURCHASE_ORDER_NUMBER)
END
AS POCOUNT
FROM ORL.FAX_OFFER_DETAIL
WHERE FAX_ID = fax.ID)
AS POCOUNT,
(SELECT SUM (VALUE) AS ORDER_VALUE
FROM ORL.FAX_OFFER_DETAIL
WHERE FAX_ID = fax.ID)
AS ORDER_VALUE,
fax.SALESPERSON_NAME,
fax.GROUP_NAME,
fax.ROLE_NAME,
fax.EMAIL,
fax.SALES_CHANNEL
FROM (SELECT fax.*,
map.ORACLE_TZ_NAME AS LOCAL_TZ_NAME,
ORL.GET_SALESPERSON (map.ORG_ID, fax.SALES_PERSON).SALESPERSON_NAME
AS SALESPERSON_NAME,
ORL.GET_SALESPERSON (map.ORG_ID, fax.SALES_PERSON).GROUP_NAME
AS GROUP_NAME,
ORL.GET_SALESPERSON (map.ORG_ID, fax.SALES_PERSON).ROLE_NAME
AS ROLE_NAME,
ORL.GET_SALESPERSON (map.ORG_ID, fax.SALES_PERSON).EMAIL
AS EMAIL,
ORL.GET_SALESPERSON (map.ORG_ID, fax.SALES_PERSON).SALES_CHANNEL
AS SALES_CHANNEL
FROM APPS_GLOBAL.GLOBAL_BU_MAPPING map,
(SELECT *
FROM ORL.FAX_HEADER FH
WHERE FH.WORKGROUP_ID = 262) fax
WHERE map.GEDIS = 'Y'
AND map.BU_ID = (SELECT BUID
FROM ORL.WORKGROUP
WHERE ID = fax.WORKGROUP_ID)
AND ORL.GET_SALESPERSON (map.ORG_ID, fax.SALES_PERSON).SALESPERSON_NAME =
'A_CARRICK') fax,
(SELECT *
FROM ORL.FAX_SOURCE FS
WHERE FS.WORKFLOW_ID IN
(SELECT /*+ CARDINALITY(t, 1) */
TO_NUMBER (
COLUMN_VALUE)
AS COLUMN_VALUE
FROM TABLE (
SplitClob ('1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98', ',')) t)) src
WHERE src.ID(+) = fax.FAX_SOURCE) FAX_LIST
WHERE RN BETWEEN 1 AND 100
ORDER BY RN ASC;[/code]
In my query the following three functions are using.
ORL.GET_FTH_WTR
ORL.GET_SALESPERSON
APPS_GLOBAL.SplitClob
[code]CREATE OR REPLACE FUNCTION ORL.GET_FTH_WTR(p_LAST_TRANSITION_ID NUMBER)
RETURN ORL.FTH_WTR_T
DETERMINISTIC
IS
v_REASON nvarchar2(1024 char);
v_WORKGROUP_TRANSITION_ID number;
v_CHANGED_BY nvarchar2(64 char);
v_CHANGED_DATE timestamp(6);
BEGIN
SELECT
WTR.REASON,
wtr.WORKGROUP_TRANSITION_ID,
fth.CHANGED_BY,
fth.CHANGED_DATE
INTO
v_REASON,
v_WORKGROUP_TRANSITION_ID,
v_CHANGED_BY,
v_CHANGED_DATE
FROM
ORL.FAX_TRANSITION_HISTORY fth,
ORL.WORKGROUP_TRANSITION_REASON wtr
WHERE
fth.ID = p_LAST_TRANSITION_ID
AND wtr.ID(+) = fth.TRANSITION_REASON_ID;
RETURN ORL.FTH_WTR_T(v_CHANGED_BY, v_CHANGED_DATE, v_REASON, v_WORKGROUP_TRANSITION_ID);
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN ORL.FTH_WTR_T(NULL, NULL, NULL, NULL);
END GET_FTH_WTR;
CREATE OR REPLACE function ORL.GET_SALESPERSON(ORG_ID number, SALESPERSON_ID number)
return ORL.SALESPERSON_T
deterministic
is
apps_bu varchar2(30);
salesperson_name varchar2(150 char);
email varchar2(70 char);
sales_channel varchar2(60 char);
role_name varchar2(60 char);
group_name varchar2(60 char);
begin
select OWNER_NAME into apps_bu
from APPS_GLOBAL.GLOBAL_BU_MAPPING
where ORG_ID = GET_SALESPERSON.ORG_ID;
execute immediate
replace('
select SALESPERSON_NAME
, EMAIL
, SALES_CHANNEL
, ROLE_NAME
, GROUP_NAME
from APPS_**.ORL_ACTIVE_SALESPERSON
where SALESPERSON_ID = :1
and rownum = 1
', 'APPS_**', apps_bu)
into salesperson_name, email, sales_channel, role_name, group_name
using SALESPERSON_ID;
return SALESPERSON_T(ORG_ID, SALESPERSON_ID, salesperson_name, email, sales_channel, role_name, group_name);
exception
when no_data_found then
return SALESPERSON_T(null, null, null, null, null, null, null);
end GET_SALESPERSON;
CREATE OR REPLACE function APPS_GLOBAL.SplitClob
p_clob clob
, p_delimiter varchar2 := ','
return StringTable
deterministic
pipelined
as
v_current_pos pls_integer := 1;
v_delimiter_pos pls_integer;
begin
if (p_clob is not NULL) and (p_delimiter is not NULL) then
while v_current_pos <= length(p_clob) loop
v_delimiter_pos := instr(p_clob, p_delimiter, v_current_pos);
if v_delimiter_pos < 1 then -- no more delimiters
v_delimiter_pos := length(p_clob) + 1;
end if;
pipe row( to_char( substr(p_clob,
v_current_pos,
v_delimiter_pos - v_current_pos) ) );
v_current_pos := v_delimiter_pos + length(p_delimiter);
end loop;
end if;
end SplitClob;
CREATE OR REPLACE TYPE SALESPERSON_T AS OBJECT
SALESPERSON_ID number(15)
, SALESPERSON_NUMBER varchar2(150 char)
, FIRST_NAME varchar2(20 char)
, LAST_NAME varchar2(40 char)
, SALES_CHANNEL varchar2(60 char)
, ORG_ID number(15)
, USER_NAME varchar2(61 char)
, EFFECTIVE_START_DATE date
, EFFECTIVE_END_DATE date
, STATUS_FLAG varchar2(1 char)
, EMAIL varchar2(70 char)
, WORK_TELEPHONE varchar2(60 char)
, MANAGERS_NAME varchar2(50 char)
, FAX_NO varchar2(60 char)
, SALESPERSON_NAME varchar2(30 char)
, TERRITORY varchar2(40 char)
, FO_LOGON varchar2(150 char)
, BO_LOGON varchar2(150 char)
, SUB_CHANNEL varchar2(25 char)
, BUSINESS_SEGMENT varchar2(3 char)
, DISCOUNT_NAME varchar2(30 char)
, RESPONSIBILITY_ID number
, RESPONSIBILITY_KEY varchar2(30 char)
CREATE OR REPLACE TYPE STRINGTABLE as table of varchar2(4000);[/code]
The total number of records in each table.
[code]SELECT COUNT(*) FROM ORL.FAX_HEADER FH --4397829
SELECT COUNT(*) FROM APPS_GLOBAL.GLOBAL_BU_MAPPING map --31
SELECT COUNT(*) FROM ORL.WORKGROUP_TRANSITION --6735
SELECT COUNT(*) FROM ORL.WORKGROUP fw --1495
SELECT COUNT(*) FROM ORL.FAX_OFFER_DETAIL --5904039
SELECT COUNT(*) FROM ORL.FAX_SOURCE--2368 --2457[/code]
Indexes on the columns.
[code]ORL.WORKGROUP_TRANSITION(ID),
ORL.WORKGROUP(ID),
ORL.FAX_OFFER_DETAIL(FAX_ID),
ORL.FAX_HEADER(WORKGROUP_ID).[/code]
Please help me to tune this query.
Thanks in advance.Hi,
Thanks for your reply.
For split the numbers into different rows , we are sending randomly.
It's not constant numbers.We have used bind variables.
For testing purpose I have hard coded the values.
How to do this split without using user defined function.
I am sending the actual query along with execution plan without any hints.
[code]SELECT FAX_LIST.*
FROM (SELECT ROW_NUMBER () OVER (ORDER BY fax.ID ASC) RN,
fax.ACCOUNT_TYPE,
fax.BU_FILE_LOCATION,
fax.COUNT_PAGES_RECEIVED,
NVL (fax.CUSTOMER_NAME, fax.SENDER_NAME) AS CUSTOMER_NAME,
fax.FAX_SOURCE,
fax.CUSTOMER_NUMBER,
fax.CUSTOMER_OMEGA_NUMBER,
fax.GENIFAX_RECIPIENT_ID,
fax.ID AS FAX_ID,
fax.DATE_RECEIVED AS FAX_RECEIVED,
fax.IS_LOCKED,
fax.LOCKED_BY,
fax.ORIGINATOR_CSI,
fax.MARGIN,
fax.PAYMENT_TYPE,
fax.PRIORITY_CODE,
fax.PRIORITY_VALUE,
FROM_TZ (fax.DATE_RECEIVED, 'UTC') AT TIME ZONE map.ORACLE_TZ_NAME AS DATE_RECEIVED,
fax.SALES_PERSON,
fax.SENDER_EMAIL,
fax.SENDER_NAME,
fax.SUBJECT,
fax.WORKGROUP_ID,
fax.LOCKED_TIME,
src.DESCRIPTION,
src.FAX_NUMBER,
src.WORKFLOW_ID,
fax.CREATED_BY,
fax.CREATED_DATE,
fax.UPDATE_DATE,
fax.UPDATED_BY,
fax.RESERVED_BY,
fax.PRICE_TO_ORDER,
fax.SKU_COUNT_TO_ORDER,
NVL (
ORL.GET_FTH_WTR (fax.LAST_TRANSITION_ID).CHANGED_BY,
CASE
WHEN fax.LAST_TRANSITION_ID IS NULL
AND fax.GENIFAX_RECIPIENT_ID IS NOT NULL
THEN
'ORL FEEDER'
ELSE
'Admin'
END
AS LAST_USER,
FROM_TZ (NVL (ORL.GET_FTH_WTR (fax.LAST_TRANSITION_ID).CHANGED_DATE,fax.DATE_RECEIVED),'UTC')
AT TIME ZONE map.ORACLE_TZ_NAME AS MOVE_DATETIME,
NVL (ORL.GET_FTH_WTR (fax.LAST_TRANSITION_ID).REASON,'Reroute')AS MOVE_REASON,
NVL ((SELECT fw.DESCRIPTION
FROM ORL.WORKGROUP_TRANSITION wt, ORL.WORKGROUP fw
WHERE wt.ID =
ORL.GET_FTH_WTR (
fax.LAST_TRANSITION_ID
).WORKGROUP_TRANSITION_ID
AND fw.ID = wt.CURRENT_WORKGROUP_ID),
CASE
WHEN fax.LAST_TRANSITION_ID IS NULL
AND fax.GENIFAX_RECIPIENT_ID IS NOT NULL
THEN
'ORL FEEDER STAGING'
ELSE
'N/A'
END
AS OLD_STATUS,
(SELECT MAX (PURCHASE_ORDER_NUMBER)
FROM ORL.FAX_OFFER_DETAIL
WHERE FAX_ID = fax.ID)
AS MAXPO,
(SELECT CASE COUNT (PURCHASE_ORDER_NUMBER)
WHEN 0 THEN NULL
ELSE COUNT (PURCHASE_ORDER_NUMBER)
END
AS POCOUNT
FROM ORL.FAX_OFFER_DETAIL
WHERE FAX_ID = fax.ID)
AS POCOUNT,
(SELECT SUM (VALUE) AS ORDER_VALUE
FROM ORL.FAX_OFFER_DETAIL
WHERE FAX_ID = fax.ID) AS ORDER_VALUE,
ORL.GET_SALESPERSON (map.ORG_ID,fax.SALES_PERSON).SALESPERSON_NAME AS SALESPERSON_NAME,
ORL.GET_SALESPERSON (map.ORG_ID,fax.SALES_PERSON).GROUP_NAME AS GROUP_NAME,
ORL.GET_SALESPERSON (map.ORG_ID,fax.SALES_PERSON).ROLE_NAME AS ROLE_NAME,
ORL.GET_SALESPERSON (map.ORG_ID, fax.SALES_PERSON).EMAIL AS EMAIL,
ORL.GET_SALESPERSON (map.ORG_ID, fax.SALES_PERSON).SALES_CHANNEL AS SALES_CHANNEL
FROM ORL.FAX_HEADER fax,
APPS_GLOBAL.GLOBAL_BU_MAPPING map,
ORL.FAX_SOURCE src
WHERE fax.WORKGROUP_ID = :WORKGROUP_ID
AND map.GEDIS = 'Y'
AND map.BU_ID = (SELECT BUID
FROM ORL.WORKGROUP
WHERE ID = fax.WORKGROUP_ID)
AND ORL.GET_SALESPERSON (map.ORG_ID,fax.SALES_PERSON).GROUP_NAME =:SALES_TEAM
AND ORL.GET_SALESPERSON (map.ORG_ID,fax.SALES_PERSON
).SALESPERSON_NAME = :SALESPERSON_NAME
AND src.WORKFLOW_ID IN
(SELECT TO_NUMBER (COLUMN_VALUE) AS COLUMN_VALUE
FROM table(SplitClob (:WORKFLOW_ID,:WORKFLOW_ID_delim)) t)
AND src.ID(+) = fax.FAX_SOURCE) FAX_LIST
WHERE RN BETWEEN 1 AND 100;
Execution Plan
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
| 0 | SELECT STATEMENT | | 2 | 12092 | 88923 (1)|
| 1 | NESTED LOOPS | | 1 | 38 | 3 (0)|
| 2 | TABLE ACCESS BY INDEX ROWID | WORKGROUP_TRANSITION | 1 | 9 | 2 (0)|
| 3 | INDEX UNIQUE SCAN | PK_WORKGROUP_TRANSITION | 1 | | 1 (0)|
| 4 | TABLE ACCESS BY INDEX ROWID | WORKGROUP | 1482 | 42978 | 1 (0)|
| 5 | INDEX UNIQUE SCAN | PK_WORKGROUP | 1 | | 0 (0)|
| 6 | SORT AGGREGATE | | 1 | 16 | |
| 7 | TABLE ACCESS BY INDEX ROWID | FAX_OFFER_DETAIL | 1 | 16 | 5 (0)|
| 8 | INDEX RANGE SCAN | FAX_OFFER_DETAIL_IDX1 | 1 | | 3 (0)|
| 9 | SORT AGGREGATE | | 1 | 16 | |
| 10 | TABLE ACCESS BY INDEX ROWID | FAX_OFFER_DETAIL | 1 | 16 | 5 (0)|
| 11 | INDEX RANGE SCAN | FAX_OFFER_DETAIL_IDX1 | 1 | | 3 (0)|
| 12 | SORT AGGREGATE | | 1 | 11 | |
| 13 | TABLE ACCESS BY INDEX ROWID | FAX_OFFER_DETAIL | 1 | 11 | 5 (0)|
| 14 | INDEX RANGE SCAN | FAX_OFFER_DETAIL_IDX1 | 1 | | 3 (0)|
| 15 | VIEW | | 2 | 12092 | 88923 (1)|
| 16 | WINDOW SORT PUSHED RANK | | 2 | 1378 | 88923 (1)|
| 17 | NESTED LOOPS | | | | |
| 18 | NESTED LOOPS | | 2 | 1378 | 88920 (1)|
| 19 | NESTED LOOPS | | 18420 | 11M| 70490 (1)|
| 20 | HASH JOIN RIGHT SEMI | | 69 | 3657 | 49 (3)|
| 21 | COLLECTION ITERATOR PICKLER FETCH| SPLITCLOB | 8168 | 16336 | 29 (0)|
| 22 | TABLE ACCESS FULL | FAX_SOURCE | 2409 | 119K| 19 (0)|
| 23 | TABLE ACCESS BY INDEX ROWID | FAX_HEADER | 268 | 160K| 2854 (1)|
| 24 | INDEX RANGE SCAN | FAX_HEADER_FS_IDX | 4345 | | 7 (0)|
| 25 | INDEX RANGE SCAN | GLOBAL_BU_MAPPING_BUID | 1 | | 0 (0)|
| 26 | TABLE ACCESS BY INDEX ROWID | WORKGROUP | 1 | 8 | 2 (0)|
| 27 | INDEX UNIQUE SCAN | PK_WORKGROUP | 1 | | 1 (0)|
| 28 | TABLE ACCESS BY INDEX ROWID | GLOBAL_BU_MAPPING | 1 | 24 | 1 (0)|
Note
- 'PLAN_TABLE' is old version
Statistics
894400 recursive calls
60 db block gets
7402741 consistent gets
0 physical reads
0 redo size
46309 bytes sent via SQL*Net to client
430 bytes received via SQL*Net from client
8 SQL*Net roundtrips to/from client
848304 sorts (memory)
0 sorts (disk)
100 rows processed[/code]
Please help me.
Thanks in advance. -
Hi
I dont know anything about tuning
can anybody help to tune this query
SQL> set autotrace traceonly explain
SQL> select count(*) from ibs_x_t_receipts c
2 where exists
3 (Select 1 from ibs_s_i_doc_receipt a,ibs_x_t_bill b
4 where A.app_fr_doc_no = c.receipt_no
5 and a.app_to_doc_no = b.doc_no
6 and a.app_to_tr_type = 'TRN001'
7 and A.app_fr_tr_type = 'TRN002'
8 and b.bill_month <= '31-dec-2008'
9 and b.balance_ser_amt = 0
10 and b.balance_tax_amt = 0)
11 /
Execution Plan
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=212880 Card=1 Byte
s=21)
1 0 SORT (AGGREGATE)
2 1 NESTED LOOPS (Cost=212880 Card=1 Bytes=21)
3 2 VIEW OF 'VW_SQ_1' (VIEW) (Cost=212878 Card=1 Bytes=14)
4 3 HASH (UNIQUE)
5 4 NESTED LOOPS
6 5 NESTED LOOPS (Cost=212878 Card=1 Bytes=66)
7 6 VIEW OF 'index$_join$_002' (VIEW) (Cost=30021
Card=91387 Bytes=3564093)
8 7 HASH JOIN
9 8 INDEX (RANGE SCAN) OF 'SIDOC_INDX1' (INDEX
) (Cost=171215 Card=91387 Bytes=3564093)
10 8 INDEX (RANGE SCAN) OF 'SIDOC_INDX2' (INDEX
) (Cost=366130 Card=91387 Bytes=3564093)
11 6 INDEX (UNIQUE SCAN) OF 'ITL_PK2' (INDEX (UNIQU
E)) (Cost=1 Card=1)
12 5 TABLE ACCESS (BY INDEX ROWID) OF 'IBS_X_T_BILL'
(TABLE) (Cost=2 Card=1 Bytes=27)
13 2 INDEX (UNIQUE SCAN) OF 'RECEIPTS_PK2' (INDEX (UNIQUE))
(Cost=1 Card=1 Bytes=7)it is running like anything, i didn't get the result.
Please help me
kanish--untested
SELECT COUNT (*)
FROM ibs_x_t_receipts c
WHERE EXISTS (
SELECT 1
FROM ibs_s_i_doc_receipt a
WHERE a.app_fr_doc_no = c.receipt_no
AND a.app_to_tr_type = 'TRN001'
AND a.app_fr_tr_type = 'TRN002'
AND EXISTS (
SELECT 1
FROM ibs_x_t_bill b
WHERE a.app_to_doc_no = b.doc_no
AND b.bill_month <= '31-dec-2008'
AND b.balance_ser_amt = 0
AND b.balance_tax_amt = 0))regards,
friend
Edited by: most wanted!!!! on Apr 17, 2012 3:51 AM -
Is there anything that can be done to tune this query?
DB version:10gR2
From AWR report, we have determined that the following SQL is taking most CPU Time. Is there anything that we can do to improve the performance of this query.
We have an index on (stat_code,create_date_time) columns of ext_replenish table.
SELECT EXT_REPLENISH.EXT_REPLENISH_ID, EXT_REPLENISH.EVENT_ID, EXT_REPLENISH.EVENT_KEY, EXT_REPLENISH.WHSE, EXT_REPLENISH.VALIDATE_KEY, EXT_REPLENISH.NBR_OF_RETRY, EXT_REPLENISH.STAT_CODE, EXT_REPLENISH.ERROR_SEQ_NBR, EXT_REPLENISH.CREATE_DATE_TIME, EXT_REPLENISH.MOD_DATE_TIME, EXT_REPLENISH.USER_ID, EXT_REPLENISH.CL_MESSAGE_ID, EXT_REPLENISH.SCHEMA_ID, EXT_REPLENISH.ELS_ACTVTY_CODE, EXT_REPLENISH.CD_MASTER_ID FROM EXT_REPLENISH WHERE ( ( ( ( ( EXT_REPLENISH.STAT_CODE = :1 ) OR ( EXT_REPLENISH.STAT_CODE = :2 ) ) OR ( ( ( EXT_REPLENISH.STAT_CODE = :3 ) AND ( EXT_REPLENISH.ERROR_SEQ_NBR >= :4 ) ) AND ( EXT_REPLENISH.ERROR_SEQ_NBR < :5 ) ) ) AND ( EXT_REPLENISH.MOD_DATE_TIME <= :6 ) ) AND ( EXT_REPLENISH.NBR_OF_RETRY < :7 ) ) AND ROWNUM <= 1 ORDER BY EXT_REPLENISH.STAT_CODE ASC, EXT_REPLENISH.CREATE_DATE_TIME ASC FOR UPDATE
Is there anyway i could tune this query?
note: Ignore the unnecessary brackets. They are system created(apparently by hibernate)
Message was edited by:
Nichols
Taking off the pre tags due to readability issue(all words appear in single line )
Message was edited by:
NicholsFrom just blindly looking at this particular query, there doesn't seem any obvious reason why an index couldn't be extended to cover all the columns specified in the where clause.
It might not help too much -> explain plan is required first really before blindly guessing.
Obviously, there's no point having an order by and a rownum (unless you wanted to do the order by before the rownum in an outer select) - I assume this is just a Hibernatism. -
Urgent Help required in Tunning this query
I have table ACCOUNT SPONSOR HOMESTORE ASH with more than 30 million rows.
My batch daily need to update or insert into this table from a temporary table TEMP_HSTRALCT. The data for temporary table is populated by below query which selects from two tables TRANSACTION POINTS and REDEMPTIONS.However both these tables are partitioned on date time and is run daily and this is running for hours.
Can anyone please help me on tuning this query
INSERT INTO temp_hstralct
(tmp_n_collector_account_num, tmp_v_location_id,
tmp_v_sponsor_id, tmp_v_source_file_name,
tmp_n_psc_insert_ind, tmp_n_psc_update_ind,
tmp_n_transaction_amount, tmp_n_transaction_points,
tmp_n_acc_insert_ind, tmp_n_ash_insert_ind,
tmp_n_col_insert_ind, tmp_n_check_digit,
tmp_n_collector_issue_num, tmp_n_csl_insert_ind,
tmp_v_offer_code, tmp_n_psa_insert_ind)
SELECT DISTINCT trp_n_collector_account_num account_num,
trp_v_location_id location_id,
trp_v_sponsor_id sponsor_id,
trp_c_creation_user batch_id, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0
FROM transaction_points, ACCOUNT, locations_master,homestores
WHERE hsr_v_accrual_allowed = 'Y'
AND trp_n_collector_account_num = ACCOUNT.acc_n_account_num(+)
AND ( ( ( ACCOUNT.acc_v_account_type = 'C'
OR ACCOUNT.acc_v_account_type IS NULL
AND hsr_v_b2c_accounts = 'Y'
OR ( ACCOUNT.acc_v_account_type = 'B'
AND hsr_v_nfb_accounts = 'Y'
OR ( ACCOUNT.acc_v_account_type = 'H'
AND hsr_v_hybrid_accounts = 'Y'
AND trp_d_creation_date_time BETWEEN SYSDATE-3
AND SYSDATE
AND trp_v_sponsor_id = 'JSAINSBURY'
AND trp_v_location_id =
locations_master.lnm_v_location_id
AND locations_master.lnm_v_partner_id = 'JSAINSBURY'
AND ( ( ( (INSTR
(hsr_v_store_status,
locations_master.lnm_c_location_status
) > 0
AND (INSTR
(hsr_v_store_type,
locations_master.lnm_c_location_type
) > 0
AND hsr_v_homestore_assignment = 'ST'
OR ( ( locations_master.lnm_c_homestore_ind =
'Y'
AND (INSTR
(hsr_v_store_status,
locations_master.lnm_c_location_status
) > 0
AND hsr_v_homestore_assignment = 'HS'
UNION ALL
SELECT DISTINCT rdm_n_collector_account_num account_num,
rdm_v_location_id location_id,
rom_v_supplier_id sponsor_id,
rdm_c_creation_user batch_id, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0
FROM redemption_details,
reward_offer_master,
ACCOUNT,
locations_master,
HOMESTORES
WHERE hsr_v_redemption_allowed = 'Y'
AND rdm_n_collector_account_num = ACCOUNT.acc_n_account_num(+)
AND ( ( ( ACCOUNT.acc_v_account_type = 'C'
OR ACCOUNT.acc_v_account_type IS NULL
AND hsr_v_b2c_accounts = 'Y'
OR ( ACCOUNT.acc_v_account_type = 'B'
AND hsr_v_nfb_accounts = 'Y'
OR ( ACCOUNT.acc_v_account_type = 'H'
AND hsr_v_hybrid_accounts = 'Y'
AND rdm_d_creation_date_time BETWEEN SYSDATE-3
AND SYSDATE
AND rom_v_reward_offer_id = rdm_v_reward_id
AND rom_v_supplier_id = 'JSAINSBURY'
AND rdm_v_location_id =
locations_master.lnm_v_location_id
AND locations_master.lnm_v_partner_id ='JSAINSBURY'
AND ( ( ( (INSTR
(hsr_v_store_status,
locations_master.lnm_c_location_status
) > 0
AND (INSTR
(hsr_v_store_type,
locations_master.lnm_c_location_type
) > 0
AND hsr_v_homestore_assignment = 'ST'
OR ( ( locations_master.lnm_c_homestore_ind =
'Y'
AND (INSTR
(hsr_v_store_status,
locations_master.lnm_c_location_status
) > 0
AND hsr_v_homestore_assignment = 'HS'
);I have copied the explain as it is and can you please try pasting in the text pad.Can you let me know whether parallel hint on this will speed up the select queries.
Plan
INSERT STATEMENT CHOOSECost: 410,815 Bytes: 2,798,394 Cardinality: 15,395
32 UNION-ALL
15 SORT UNIQUE Cost: 177,626 Bytes: 2,105,592 Cardinality: 11,896
14 FILTER
13 HASH JOIN Cost: 177,312 Bytes: 2,105,592 Cardinality: 11,896
2 TABLE ACCESS BY INDEX ROWID LMHOLTP.LOCATIONS_MASTER Cost: 37 Bytes: 23,184 Cardinality: 966
1 INDEX RANGE SCAN NON-UNIQUE LMHOLTP.IX_LOCATIONS_MASTER_3 Cost: 3 Cardinality: 1
12 FILTER
11 HASH JOIN OUTER
8 MERGE JOIN CARTESIAN Cost: 155,948 Bytes: 702,656,660 Cardinality: 4,845,908
3 TABLE ACCESS FULL LMHOLTP.HOMESTORES Cost: 2 Bytes: 104 Cardinality: 1
7 BUFFER SORT Cost: 155,946 Bytes: 198,682,228 Cardinality: 4,845,908
6 PARTITION RANGE ITERATOR Partition #: 12
5 TABLE ACCESS BY LOCAL INDEX ROWID LMHOLTP.TRANSACTION_POINTS Cost: 155,946 Bytes: 198,682,228 Cardinality: 4,845,908 Partition #: 12
4 INDEX RANGE SCAN NON-UNIQUE LMHOLTP.IX_TRANSACTION_POINTS_1 Cost: 24,880 Cardinality: 6,978,108 Partition #: 12
10 PARTITION RANGE ALL Partition #: 15 Partitions accessed #1 - #5
9 TABLE ACCESS FULL LMHOLTP.ACCOUNT Cost: 6,928 Bytes: 68,495,680 Cardinality: 8,561,960 Partition #: 15 Partitions accessed #1 - #5
31 SORT UNIQUE Cost: 233,189 Bytes: 692,802 Cardinality: 3,499
30 FILTER
29 FILTER
28 NESTED LOOPS OUTER
24 HASH JOIN Cost: 226,088 Bytes: 664,810 Cardinality: 3,499
16 TABLE ACCESS FULL LMHOLTP.REWARD_OFFER_MASTER Cost: 8 Bytes: 2,280 Cardinality: 114
23 HASH JOIN Cost: 226,079 Bytes: 8,327,280 Cardinality: 48,984
20 TABLE ACCESS BY INDEX ROWID LMHOLTP.LOCATIONS_MASTER Cost: 37 Bytes: 432 Cardinality: 18
19 NESTED LOOPS Cost: 39 Bytes: 2,304 Cardinality: 18
17 TABLE ACCESS FULL LMHOLTP.HOMESTORES Cost: 2 Bytes: 104 Cardinality: 1
18 INDEX RANGE SCAN NON-UNIQUE LMHOLTP.IX_LOCATIONS_MASTER_3 Cost: 3 Cardinality: 966
22 PARTITION RANGE ITERATOR Partition #: 28
21 TABLE ACCESS FULL LMHOLTP.REDEMPTION_DETAILS Cost: 226,019 Bytes: 261,636,270 Cardinality: 6,229,435 Partition #: 28
27 PARTITION RANGE ITERATOR Partition #: 30
26 TABLE ACCESS BY LOCAL INDEX ROWID LMHOLTP.ACCOUNT Cost: 2 Bytes: 8 Cardinality: 1 Partition #: 30
25 INDEX UNIQUE SCAN UNIQUE LMHOLTP.CO_PK_ACCOUNT Cost: 1 Cardinality: 1 Partition #: 30 -
Is it possible to tune this query.....
This query takes 10 minutes to run on Windows 2003,raid10,Oracle 10.2.0.4.Is there any portion i can look into optimize the query..
Removing the query..
Edited by: Maran Viswarayar on Nov 13, 2009 1:51 PM
Edited by: Maran Viswarayar on Nov 16, 2009 2:58 PMThis is the plan for the view query called inside the function...I did create new indexes to force index scans and plans are here for the same query with index and without index
Without Index
PROD REPORT
Execution Plan
Plan hash value: 3032672189
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 136K| 26M| | 6443 (1)| 00:01:18 |
| 1 | HASH UNIQUE | | 136K| 26M| 56M| 6443 (1)| 00:01:18 |
|* 2 | HASH JOIN RIGHT ANTI | | 136K| 26M| | 449 (3)| 00:00:06 |
| 3 | VIEW | VW_SQ_1 | 1 | 12 | | 4 (0)| 00:00:01 |
| 4 | NESTED LOOPS | | 1 | 33 | | 4 (0)| 00:00:01 |
|* 5 | INDEX RANGE SCAN | PR_RECORD_DTL_IDX | 1 | 19 | | 3 (0)| 00:00:01 |
| 6 | TABLE ACCESS BY INDEX ROWID| PR_CALENDAR | 1 | 14 | | 1 (0)| 00:00:01 |
|* 7 | INDEX UNIQUE SCAN | PK_PR_CALENDAR | 1 | | | 0 (0)| 00:00:01 |
|* 8 | HASH JOIN | | 136K| 24M| | 444 (3)| 00:00:06 |
| 9 | TABLE ACCESS FULL | HRM_EMPLOYEE | 3468 | 128K| | 69 (0)| 00:00:01 |
|* 10 | HASH JOIN | | 151K| 21M| | 373 (2)| 00:00:05 |
| 11 | INDEX FAST FULL SCAN | PK_PR_CALENDAR | 74 | 814 | | 2 (0)| 00:00:01 |
|* 12 | HASH JOIN | | 298K| 39M| | 370 (2)| 00:00:05 |
|* 13 | HASH JOIN | | 1720 | 169K| | 22 (10)| 00:00:01 |
| 14 | TABLE ACCESS FULL | PR_MAPPING | 422 | 5064 | | 5 (0)| 00:00:01 |
|* 15 | HASH JOIN | | 1726 | 150K| | 16 (7)| 00:00:01 |
| 16 | TABLE ACCESS FULL | PR_MAPPING_DTL | 1466 | 45446 | | 5 (0)| 00:00:01 |
|* 17 | HASH JOIN | | 1178 | 68324 | | 11 (10)| 00:00:01 |
| 18 | NESTED LOOPS | | 77 | 1001 | | 5 (0)| 00:00:01 |
| 19 | TABLE ACCESS FULL | PR_REPORT_SECTION | 77 | 770 | | 5 (0)| 00:00:01 |
|* 20 | INDEX UNIQUE SCAN | PR_REPORT_PK | 1 | 3 | | 0 (0)| 00:00:01 |
| 21 | TABLE ACCESS FULL | PR_REPORT_DATA | 1178 | 53010 | | 5 (0)| 00:00:01 |
|* 22 | TABLE ACCESS FULL | PR_RECORD_DTL | 74734 | 2846K| | 347 (1)| 00:00:05 |
Predicate Information (identified by operation id):
2 - access("EMPLOYEE_ID"="PRD"."EMPLOYEE_ID" AND "REF_CALENDAR_ID"="PRD"."PAY_CALENDAR_ID")
5 - access("IPRD"."PAY_CALENDAR_ID" LIKE 'SUP_%')
filter("IPRD"."PAY_CALENDAR_ID" LIKE 'SUP_%')
7 - access("IPRD"."PAY_CALENDAR_ID"="IPC"."PAY_CALENDAR_ID")
filter("IPC"."PAY_CALENDAR_ID" LIKE 'SUP_%')
8 - access("HE"."EMPLOYEE_ID"="PRD"."EMPLOYEE_ID")
10 - access("PRD"."PAY_CALENDAR_ID"="PC"."PAY_CALENDAR_ID")
12 - access("PM"."ITEM_ID"="PRD"."ITEM_ID")
13 - access("PMD"."PR_ID"="PM"."PR_ID")
15 - access("PRD"."DATA_NAME"="PMD"."NAME")
17 - access("PRS"."SECTION_ID"="PRD"."REF_SECTION")
20 - access("PR"."REPORT_ID"="PRS"."REPORT_ID")
22 - filter("PRD"."PAY_CALENDAR_ID" NOT LIKE 'RET_%')
Statistics
88 recursive calls
0 db block gets
2026 consistent gets
11080 physical reads
0 redo size
45539910 bytes sent via SQL*Net to client
435394 bytes received via SQL*Net from client
39547 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
593178 rows processed
After index creation
After Index creation--------
xecution Plan
lan hash value: 1520293404
Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
0 | SELECT STATEMENT | | 1366 | 268K| | 508 (2)| 00:00:07 |
1 | HASH UNIQUE | | 1366 | 268K| 584K| 508 (2)| 00:00:07 |
2 | NESTED LOOPS | | 1366 | 268K| | 446 (2)| 00:00:06 |
* 3 | HASH JOIN | | 1366 | 264K| | 446 (2)| 00:00:06 |
4 | TABLE ACCESS FULL | PR_REPORT_SECTION | 77 | 770 | | 5 (0)| 00:00:01 |
* 5 | HASH JOIN | | 1366 | 250K| | 440 (2)| 00:00:06 |
6 | TABLE ACCESS FULL | PR_REPORT_DATA | 1178 | 53010 | | 5 (0)| 00:00:01 |
* 7 | HASH JOIN | | 1160 | 161K| | 435 (2)| 00:00:06 |
* 8 | HASH JOIN RIGHT ANTI | | 335 | 37520 | | 429 (2)| 00:00:06 |
9 | VIEW | VW_SQ_1 | 1 | 12 | | 4 (0)| 00:00:01 |
10 | NESTED LOOPS | | 1 | 33 | | 4 (0)| 00:00:01 |
* 11 | INDEX RANGE SCAN | PR_RECORD_DTL_IDX | 1 | 19 | | 3 (0)| 00:00:01 |
12 | TABLE ACCESS BY INDEX ROWID| PR_CALENDAR | 1 | 14 | | 1 (0)| 00:00:01 |
* 13 | INDEX UNIQUE SCAN | PK_PR_CALENDAR | 1 | | | 0 (0)| 00:00:01 |
* 14 | HASH JOIN | | 335 | 33500 | | 425 (2)| 00:00:06 |
15 | TABLE ACCESS FULL | PR_MAPPING | 422 | 5064 | | 5 (0)| 00:00:01 |
* 16 | HASH JOIN | | 343 | 30184 | | 419 (1)| 00:00:06 |
* 17 | HASH JOIN | | 379 | 18950 | | 349 (1)| 00:00:05 |
18 | INDEX FAST FULL SCAN | PK_PR_CALENDAR | 74 | 814 | | 2 (0)| 00:00:01 |
* 19 | TABLE ACCESS FULL | PR_RECORD_DTL | 74734 | 2846K| | 347 (1)| 00:00:05 |
20 | TABLE ACCESS FULL | HRM_EMPLOYEE | 3468 | 128K| | 69 (0)| 00:00:01 |
21 | TABLE ACCESS FULL | PR_MAPPING_DTL | 1466 | 45446 | | 5 (0)| 00:00:01 |
* 22 | INDEX UNIQUE SCAN | PR_REPORT_PK | 1 | 3 | | 0 (0)| 00:00:01 |
redicate Information (identified by operation id):
Predicate Information (identified by operation id):
3 - access("PRS"."SECTION_ID"="PRD"."REF_SECTION")
5 - access("PRD"."DATA_NAME"="PMD"."NAME")
7 - access("PMD"."PR_ID"="PM"."PR_ID")
8 - access("EMPLOYEE_ID"="PRD"."EMPLOYEE_ID" AND SUBSTR("VW_SQ_1"."REF_CALENDAR_ID",1,4)=SUBSTR("
"PAY_CALENDAR_ID",1,4) AND "REF_CALENDAR_ID"="PRD"."PAY_CALENDAR_ID")
11 - access("IPRD"."PAY_CALENDAR_ID" LIKE 'SUP_%')
filter("IPRD"."PAY_CALENDAR_ID" LIKE 'SUP_%')
13 - access("IPRD"."PAY_CALENDAR_ID"="IPC"."PAY_CALENDAR_ID")
filter("IPC"."PAY_CALENDAR_ID" LIKE 'SUP_%' AND
SUBSTR("IPRD"."PAY_CALENDAR_ID",1,4)=SUBSTR("IPC"."PAY_CALENDAR_ID",1,4))
14 - access("PM"."ITEM_ID"="PRD"."ITEM_ID")
16 - access("HE"."EMPLOYEE_ID"="PRD"."EMPLOYEE_ID")
17 - access(SUBSTR("PRD"."PAY_CALENDAR_ID",1,4)=SUBSTR("PC"."PAY_CALENDAR_ID",1,4) AND
"PRD"."PAY_CALENDAR_ID"="PC"."PAY_CALENDAR_ID")
19 - filter("PRD"."PAY_CALENDAR_ID" NOT LIKE 'RET_%')
22 - access("PR"."REPORT_ID"="PRS"."REPORT_ID")
Statistics
111 recursive calls
0 db block gets
2028 consistent gets
9540 physical reads
0 redo size
33396834 bytes sent via SQL*Net to client
435394 bytes received via SQL*Net from client
39547 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
593178 rows processedThe cost has changed dramatically....i am not sure this can help in bringing down the response time....
any clues can be helpfuel..and i did go through CBO articles/discussions byt jonathan ,richardfoote...
Can this help ?
Performace tuning looks to be the Toughest job for a DBA :) -
Can somebody please simplify/tune this query?
Hi,
Can somebody please simplify this query?
It's a little urgent. Currently this query is taking 10 mins to run.
Thank you so much,
vasu
Purpose:
First Child Case Ind =
Get Parent Case for this case.
Get all child cases for this parent case.
Arrange them in ascending order by create Date.
If the first case (eldest case) is the case in question,
then Y
else N
Query:
SELECT THIS_CASE.OBJID THIS_CASE_OBJID,
PARENT.PARENT_OBJID,
(CASE
WHEN PARENT.FIRST_CHILD_OBJID = THIS_CASE.OBJID
THEN 'Y'
ELSE 'N'
END) IS_FIRST_CHILD_CASE
FROM SA.TABLE_CASE THIS_CASE,
(SELECT PARENT_OBJID,
CHILD_OBJID FIRST_CHILD_OBJID
FROM (SELECT PARENT_CASE.OBJID PARENT_OBJID,
CHILD_CASE.OBJID CHILD_OBJID,
CHILD_CASE.CREATION_TIME,
ROW_NUMBER() OVER (PARTITION BY PARENT_CASE.OBJID
ORDER BY CHILD_CASE.CREATION_TIME ASC) ROW_NUM
FROM SA.TABLE_CASE PARENT_CASE,
SA.TABLE_CASE CHILD_CASE
WHERE PARENT_CASE.OBJID = CHILD_CASE.CASE_VICTIM2CASE
WHERE ROW_NUM = 1
) PARENT
WHERE THIS_CASE.CASE_VICTIM2CASE = PARENT.PARENT_OBJID(+)Thank you for the quick reply.
Here is the explain plan:
Operation Object Name Rows Bytes Cost
SELECT STATEMENT Optimizer Mode=CHOOSE 2 M 32831
HASH JOIN OUTER 2 M 130 M 32831
TABLE ACCESS FULL SA.TABLE_CASE 2 M 24 M 21550
VIEW 307 K 11 M 10130
WINDOW SORT PUSHED RANK 307 K 7 M 10130
MERGE JOIN 307 K 7 M 8666
TABLE ACCESS BY INDEX ROWID SA.TABLE_CASE 307 K 4 M 1266
INDEX FULL SCAN SA.IND_CASE_VICTIM2CASE 307 K 738
SORT JOIN 2 M 19 M 7400
INDEX FAST FULL SCAN SA.PK_TABLE_CASE 2 M 19 M 785
Please let me know.
Thank you. -
I am running the following query. This is being run for every row that is being loaded. I figured that this is taking the most time
select distinct h.PRNT_PROD_GRP_ID, h.CHILD_PROD_GRP_ID, pg.PROD_GRP_REPORTING_NM, pg.PROD_GRP_ID, pg.PROD_GRP_TYP_ID
from PROD_GRP_HCHY_OUTBD h, PROD_GRP pg
where pg.PROD_GRP_ID = h.PRNT_PROD_GRP_ID and
pg.PROD_GRP_ID in (select c.PROD_GRP_ID from prod_grp p, prod_grp c, PROD_GRP_HCHY_OUTBD hy, (select h.PRNT_PROD_GRP_ID, h.CHILD_PROD_GRP_ID, level LVLID, PROD_GRP_HCHY_OUTBD_ID from PROD_GRP_HCHY_OUTBD h where h.PROD_MKT_ID in (select pga.PROD_GRP_ID from APLCTN_SYS aps, APLCTN a, PROD_GRP_APLCTN pga where aps.APLCTN_SYS_Cd = 'ETMS' AND aps.APLCTN_SYS_ID = a.APLCTN_SYS_ID and a.APLCTN_ID = pga.APLCTN_ID) start with h.PRNT_PROD_GRP_ID in (select pga.PROD_GRP_ID from APLCTN_SYS aps, APLCTN a, PROD_GRP_APLCTN pga where aps.APLCTN_SYS_Cd = 'ETMS' AND aps.APLCTN_SYS_ID = a.APLCTN_SYS_ID and a.APLCTN_ID = pga.APLCTN_ID) connect by h.PRNT_PROD_GRP_ID = prior h.CHILD_PROD_GRP_ID) TREE where p.prod_grp_id = TREE.PRNT_PROD_GRP_ID and c.prod_grp_id = TREE.CHILD_PROD_GRP_ID and hy.PROD_GRP_HCHY_OUTBD_ID = TREE.PROD_GRP_HCHY_OUTBD_ID) connect by prior h.PRNT_PROD_GRP_ID = h.CHILD_PROD_GRP_ID start with h.CHILD_PROD_GRP_ID = 7650 order by pg.PROD_GRP_TYP_ID;hey nick,
this is the query that is run by Tibco (middleware).
we are trying to extract this data from the data store and load into a target database.
this query generates a tree of parent - child rows that belong to a particular criteria.
everytime the parent is fetched for a particular child, we need to make sure that the parent falls in that criteria and hence the many (in) queries.
hope this helps -
Hi All,
Please help me to improve this query
Objective of this query is find count of individual who order product in last 380 days and there gender.
SELECT /* PARALLEL_MAX_SERVERS */
COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 45 and a.gender in (1,2,7) THEN cc.individual_id END) AS male_45
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 105 and a.gender in (1,2,7) THEN cc.individual_id END) AS male_105
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 195 and a.gender in (1,2,7) THEN cc.individual_id END) AS male_195
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 380 and a.gender in (1,2,7) THEN cc.individual_id END) AS male_380
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 45 and a.gender in (4,5,8) THEN cc.individual_id END) AS female_45
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 105 and a.gender in (4,5,8) THEN cc.individual_id END) AS female_105
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 195 and a.gender in (4,5,8) THEN cc.individual_id END) AS female_195
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 380 and a.gender in (4,5,8) THEN cc.individual_id END) AS female_380
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 45 and e.DEVOTIONAL in ('Y') THEN cc.individual_id END) AS b_45
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 105 and e.DEVOTIONAL in ('Y') THEN cc.individual_id END) AS b_105
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 195 and e.DEVOTIONAL in ('Y') THEN cc.individual_id END) AS b_195
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 380 and e.DEVOTIONAL in ('Y') THEN cc.individual_id END) AS b_380
FROM order cc, profile e , address a, seg d
WHERE nbr IN (090)
AND cc.order_date >= SYSDATE - 380
AND cc.individual_id = e.individual_id
and cc.individual_id = a.individual_id
and cc.individual_id = d.individual_id;
Plan hash value: 999897
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
| 0 | SELECT STATEMENT | | 1 | 43 | 4461 (2)| 00:00:12 | | | | | |
| 1 | SORT GROUP BY | | 1 | 43 | | | | | | | |
| 2 | PX COORDINATOR | | | | | | | | | | |
| 3 | PX SEND QC (RANDOM) | :TQ10001 | 1 | 43 | | | | | Q1,01 | P->S | QC (RAND) |
| 4 | SORT GROUP BY | | 1 | 43 | | | | | Q1,01 | PCWP | |
| 5 | PX RECEIVE | | 1 | 43 | | | | | Q1,01 | PCWP | |
| 6 | PX SEND HASH | :TQ10000 | 1 | 43 | | | | | Q1,00 | P->P | HASH |
| 7 | SORT GROUP BY | | 1 | 43 | | | | | Q1,00 | PCWP | |
| 8 | NESTED LOOPS | | 94955 | 3987K| 4461 (2)| 00:00:12 | | | Q1,00 | PCWP | |
| 9 | NESTED LOOPS | | 91745 | 3225K| 3652 (2)| 00:00:10 | | | Q1,00 | PCWP | |
| 10 | NESTED LOOPS | | 91745 | 2419K| 2039 (3)| 00:00:06 | | | Q1,00 | PCWP | |
| 11 | PX BLOCK ITERATOR | | 91745 | 1612K| 427 (7)| 00:00:02 | 1 | 16 | Q1,00 | PCWC | |
|* 12 | TABLE ACCESS FULL | ORDER | 91745 | 1612K| 427 (7)| 00:00:02 | 1 | 16 | Q1,00 | PCWP | |
| 13 | PARTITION HASH ITERATOR | | 1 | 9 | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
| 14 | TABLE ACCESS BY LOCAL INDEX ROWID| address | 1 | 9 | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
|* 15 | INDEX UNIQUE SCAN | XPKaddrsss | 1 | | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
| 16 | PARTITION HASH ITERATOR | | 1 | 9 | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
| 17 | TABLE ACCESS BY LOCAL INDEX ROWID | PROFILE | 1 | 9 | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
|* 18 | INDEX UNIQUE SCAN | XPK_PROFILE | 1 | | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
|* 19 | INDEX UNIQUE SCAN | IDPK_SEG | 1 | 7 | 1 (0)| 00:00:01 | | | Q1,00 | PCWP | |
Predicate Information (identified by operation id):
12 - filter("CC"."NBR"=090 AND "CC"."ORDER_DT">=SYSDATE@!-380)
15 - access("CC"."INDIVIDUAL_ID"="A"."INDIVIDUAL_ID")
18 - access("CC"."INDIVIDUAL_ID"="E"."INDIVIDUAL_ID")
19 - access("CC"."INDIVIDUAL_ID"="D"."INDIVIDUAL_ID")show parameter optimizer
optimizer_dynamic_sampling integer 2
optimizer_features_enable string 10.2.0.1
optimizer_index_caching integer 0
optimizer_index_cost_adj integer 100
optimizer_mode string CHOOSE
optimizer_secure_view_merging boolean TRUE
SQL> show parameter db_file_multi
db_file_multiblock_read_count integer 64
with cc as
(select individual_id , order_date from order WHERE nbr IN (090)
AND order_date >= SYSDATE - 380) ,
a as(select gender , individual_id from address ),
e as(select individual_id , DEVOTIONAL from profile where DEVOTIONAL='Y')
SELECT /* PARALLEL_MAX_SERVERS */
COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 45 and a.gender in (1,2,7) THEN cc.individual_id END) AS male_45
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 105 and a.gender in (1,2,7) THEN cc.individual_id END) AS male_105
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 195 and a.gender in (1,2,7) THEN cc.individual_id END) AS male_195
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 380 and a.gender in (1,2,7) THEN cc.individual_id END) AS male_380
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 45 and a.gender in (4,5,8) THEN cc.individual_id END) AS female_45
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 105 and a.genderin (4,5,8) THEN cc.individual_id END) AS female_105
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 195 and a.gender in (4,5,8) THEN cc.individual_id END) AS female_195
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 380 and a.gender in (4,5,8) THEN cc.individual_id END) AS female_380
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 45 and e.DEVOTIONAL in ('Y') THEN cc.individual_id END) AS dev_45
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 105 and e.DEVOTIONAL in ('Y') THEN cc.individual_id END) AS dev_105
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 195 and e.DEVOTIONAL in ('Y') THEN cc.individual_id END) AS dev_195
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 380 and e.DEVOTIONAL in ('Y') THEN cc.individual_id END) AS dev_380
FROM cc, e , a, seg d
where cc.individual_id = e.individual_id
and cc.individual_id = a.individual_id
and cc.individual_id = d.individual_id; Plan hash value: 898635832
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
| 0 | SELECT STATEMENT | | 1 | 43 | 4461 (2)| 00:00:12 | | | | | |
| 1 | SORT GROUP BY | | 1 | 43 | | | | | | | |
| 2 | PX COORDINATOR | | | | | | | | | | |
| 3 | PX SEND QC (RANDOM) | :TQ10001 | 1 | 43 | | | | | Q1,01 | P->S | QC (RAND) |
| 4 | SORT GROUP BY | | 1 | 43 | | | | | Q1,01 | PCWP | |
| 5 | PX RECEIVE | | 1 | 43 | | | | | Q1,01 | PCWP | |
| 6 | PX SEND HASH | :TQ10000 | 1 | 43 | | | | | Q1,00 | P->P | HASH |
| 7 | SORT GROUP BY | | 1 | 43 | | | | | Q1,00 | PCWP | |
| 8 | NESTED LOOPS | | 94956 | 3987K| 4461 (2)| 00:00:12 | | | Q1,00 | PCWP | |
| 9 | NESTED LOOPS | | 91747 | 3225K| 3652 (2)| 00:00:10 | | | Q1,00 | PCWP | |
| 10 | NESTED LOOPS | | 91747 | 2419K| 2039 (3)| 00:00:06 | | | Q1,00 | PCWP | |
| 11 | PX BLOCK ITERATOR | | 91747 | 1612K| 427 (7)| 00:00:02 | 1 | 16 | Q1,00 | PCWC | |
|* 12 | TABLE ACCESS FULL | ORDER | 91747 | 1612K| 427 (7)| 00:00:02 | 1 | 16 | Q1,00 | PCWP | |
| 13 | PARTITION HASH ITERATOR | | 1 | 9 | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
| 14 | TABLE ACCESS BY LOCAL INDEX ROWID| address | 1 | 9 | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
|* 15 | INDEX UNIQUE SCAN | XPKaddress | 1 | | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
| 16 | PARTITION HASH ITERATOR | | 1 | 9 | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
|* 17 | TABLE ACCESS BY LOCAL INDEX ROWID | PROFILE | 1 | 9 | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
|* 18 | INDEX UNIQUE SCAN | XPK PROFILE | 1 | | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
|* 19 | INDEX UNIQUE SCAN | IDPK_SEG | 1 | 7 | 1 (0)| 00:00:01 | | | Q1,00 | PCWP | |
Predicate Information (identified by operation id):
12 - filter("NBR"=090 AND "DATE">=SYSDATE@!-380)
15 - access("INDIVIDUAL_ID"="INDIVIDUAL_ID")
17 - filter("DEVOTIONAL"='Y')
18 - access("INDIVIDUAL_ID"="INDIVIDUAL_ID")
19 - access("INDIVIDUAL_ID"="D"."INDIVIDUAL_ID")
SELECT /* PARALLEL_MAX_SERVERS */
COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 45 and a.gender in (1,2,7) THEN cc.individual_id END) AS male_45
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 105 and a.gender in (1,2,7) THEN cc.individual_id END) AS male_105
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 195 and a.gender in (1,2,7) THEN cc.individual_id END) AS male_195
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 380 and a.gender in (1,2,7) THEN cc.individual_id END) AS male_380
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 45 and a.gender in (4,5,8) THEN cc.individual_id END) AS female_45
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 105 and a.gender in (4,5,8) THEN cc.individual_id END) AS female_105
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 195 and a.gender in (4,5,8) THEN cc.individual_id END) AS female_195
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 380 and a.gender in (4,5,8) THEN cc.individual_id END) AS female_380
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 45 and e.DEVOTIONAL in ('Y') THEN cc.individual_id END) AS bible_45
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 105 and e.DEVOTIONAL in ('Y') THEN cc.individual_id END) AS bible_105
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 195 and e.DEVOTIONAL in ('Y') THEN cc.individual_id END) AS bible_195
,COUNT(unique CASE WHEN cc.order_date >= SYSDATE - 380 and e.DEVOTIONAL in ('Y') THEN cc.individual_id END) AS bible_380
FROM order cc, profile e , address a, seg d
WHERE nbr IN (090)
AND cc.order_date >= SYSDATE - 380
AND cc.individual_id = e.individual_id
and cc.individual_id = a.individual_id
and cc.individual_id = d.individual_id;Plan hash value: 898635832
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
| 0 | SELECT STATEMENT | | 1 | 43 | 4461 (2)| 00:00:12 | | | | | |
| 1 | SORT GROUP BY | | 1 | 43 | | | | | | | |
| 2 | PX COORDINATOR | | | | | | | | | | |
| 3 | PX SEND QC (RANDOM) | :TQ10001 | 1 | 43 | | | | | Q1,01 | P->S | QC (RAND) |
| 4 | SORT GROUP BY | | 1 | 43 | | | | | Q1,01 | PCWP | |
| 5 | PX RECEIVE | | 1 | 43 | | | | | Q1,01 | PCWP | |
| 6 | PX SEND HASH | :TQ10000 | 1 | 43 | | | | | Q1,00 | P->P | HASH |
| 7 | SORT GROUP BY | | 1 | 43 | | | | | Q1,00 | PCWP | |
| 8 | NESTED LOOPS | | 94955 | 3987K| 4461 (2)| 00:00:12 | | | Q1,00 | PCWP | |
| 9 | NESTED LOOPS | | 91745 | 3225K| 3652 (2)| 00:00:10 | | | Q1,00 | PCWP | |
| 10 | NESTED LOOPS | | 91745 | 2419K| 2039 (3)| 00:00:06 | | | Q1,00 | PCWP | |
| 11 | PX BLOCK ITERATOR | | 91745 | 1612K| 427 (7)| 00:00:02 | 1 | 16 | Q1,00 | PCWC | |
|* 12 | TABLE ACCESS FULL | ORDER | 91745 | 1612K| 427 (7)| 00:00:02 | 1 | 16 | Q1,00 | PCWP | |
| 13 | PARTITION HASH ITERATOR | | 1 | 9 | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
| 14 | TABLE ACCESS BY LOCAL INDEX ROWID| address | 1 | 9 | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
|* 15 | INDEX UNIQUE SCAN | XPKaddrsss | 1 | | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
| 16 | PARTITION HASH ITERATOR | | 1 | 9 | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
| 17 | TABLE ACCESS BY LOCAL INDEX ROWID | PROFILE | 1 | 9 | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
|* 18 | INDEX UNIQUE SCAN | XPK_PROFILE | 1 | | 0 (0)| 00:00:01 | KEY | KEY | Q1,00 | PCWP | |
|* 19 | INDEX UNIQUE SCAN | IDPK_SEG | 1 | 7 | 1 (0)| 00:00:01 | | | Q1,00 | PCWP | |
Predicate Information (identified by operation id):
12 - filter("CC"."NBR"=090 AND "CC"."ORDER_DT">=SYSDATE@!-380)
15 - access("CC"."INDIVIDUAL_ID"="A"."INDIVIDUAL_ID")
18 - access("CC"."INDIVIDUAL_ID"="E"."INDIVIDUAL_ID")
19 - access("CC"."INDIVIDUAL_ID"="D"."INDIVIDUAL_ID") -
How to performance tune this query
I need some inputs on how to do performance tuning on this query to improve performance.
It takes around 45 secs to run. Is it possible to make any improvements in this by putting hints or writing in another way?
select count(*)
as nCount from A ,
B ,
C
WHERE A.COL1 = B.COL1 AND
A.COl2 <> 'COM' AND
B.COL2 = C.COL1 AND
B.COl3 IS NULL AND
B.COL4 = 'TEST'
This is the query plan:
Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop
SELECT STATEMENT Optimizer Mode=CHOOSE 1 51
SORT AGGREGATE 1 37
HASH JOIN 48 K 1 M 51
TABLE ACCESS FULL A 68 K 998 K 32
NESTED LOOPS 98 K 2 M 5
TABLE ACCESS BY INDEX ROWID B 142 K 2 M 4
INDEX SKIP SCAN XIF37B 142 K 6
INDEX UNIQUE SCAN XPKC 1 5Mcka
As well as EXPLAIN PLAN, let us know what proportion of rows are visited by this query. It may be that it is not using a full table scan when it should (or vice versa).
And of course we'd need to know what indexes are available, and how selective they are for the predicated you have in this query ...
Regards Nigel -
Is there anyway to tune this query?
DB Version:10gR2
The below query using an Inline view is slow because alloc_ord_dtl table has more than a million records and a_inventoryid column in the join condition
(i.inventory_id = aod.a_inventoryid)has only 75,000 distinct records (out of 1 million total records in alloc_ord_dtl).
Is there any way to rewrite the below query?
select b.a_identity ALLOC_ID, b.inventory_id CURR_I_ID, b.sku_id SKU_ID, b.item_name SKU_NAME, ii.inventory_id DEST_I_ID
from ( select aod.a_identity, i.inventory_id, i.sku_id, i.facility_id,
ic.item_name, ic.item_id
from inv_task i inner join alloc_ord_dtl aod on (i.inventory_id=aod.a_inventoryid)
inner join inbound_carton ic on (aod.a_skuname=ic.item_name)
and aod.a_status =30
and i.inventory_type =6
and i.inventory_object_type=14
and i.inventory_status =44
) b left outer join inv_task ii (on b.sku_id=ii.sku_id)
and ii.inventory_object_type=8
and b.facility_id = ii.facility_idT.Boyd wrote:
Is there any way this query can re-written?That's like me asking you to fix my car without providing any other information. If you would like a reasonable answer to that question you must provide the following:
1. Oracle version (SELECT * FROM V$VERSION)
2. Sample data in the form of CREATE / INSERT statements.
3. Expected output
4. Explanation of expected output (A.K.A. "business logic")
5. Use \ tags for #2 and #3. See FAQ (Link on top right side) for details. -
Plz help Either new idea nor tune this query
Hi,
I had two queries like below(1 &2).And As per my requirement i need to merge two queries to as one query and i wrote that one using decode(please see Resulted query3).But it's taking too much time .PLease help to tune the
3rd query or suggest me a new idea.
1)
select ts.institution_id,tsd.test_alias,count(1) from test_detail td,test_session_detail tsd,test_session ts where td.test_detail_id=tsd.test_detail_id and tsd.test_session_id=ts.test_session_id and TRUNC(test_start_date) BETWEEN to_date('02/01/2009', 'MM/DD/YYYY') AND to_date('08/04/2009', 'MM/DD/YYYY') group by ts.institution_id,tsd.test_alias
2)
select a.INST_SITE_ID, a.INSTITUTION_ID_DISPLAY, a.institution_name, a.SITE_ID_DISPLAY, a.site_name, a.region_name,CASE WHEN a.state_name = 'Other' THEN a.OTHER ELSE a.state_name END state_name from vueinstitutionsite a,(select distinct institution_id from test_session a,test_session_detail b where a.test_session_id=b.test_session_id and trunc(test_start_date) between to_date('08/01/2009','MM/DD/YYYY') and to_date('08/04/2009','MM/DD/YYYY'))b where a.inst_site_id=b.institution_id order by a.INSTITUTION_ID_DISPLAY
Resulted query
*3)*
SELECT max(a.institution_id_display)institution_id
,max(a.institution_name)institution_name,max(a.site_id_display)site_id,
max(a.site_name)site_name,max(a.region_name)region_name,
count(decode(tsd.test_alias,'rd',tsd.test_alias))rd,
count(decode(tsd.test_alias,'ss',tsd.test_alias))ss,
count(decode(tsd.test_alias,'resk',tsd.test_alias))resk,
count(decode(tsd.test_alias,'snmn',tsd.test_alias))snmn,
count(decode(tsd.test_alias,'clm',tsd.test_alias))clm,
count(decode(tsd.test_alias,'lgus',tsd.test_alias))lgus,
count(decode(tsd.test_alias,'loeplis',tsd.test_alias))loeplis,
count(decode(tsd.test_alias,'arit',tsd.test_alias))arit,
count(decode(tsd.test_alias,'alge',tsd.test_alias))alge,
count(decode(tsd.test_alias,'wp_i3',tsd.test_alias))wp_i3,
count(decode(tsd.test_alias,'wp_esl',tsd.test_alias))wp_esl,
count(decode(tsd.test_alias,'css',tsd.test_alias))css,
count(decode(tsd.test_alias,'crd',tsd.test_alias))crd,
count(decode(tsd.test_alias,'carit',tsd.test_alias))carit,
count(decode(tsd.test_alias,'calge',tsd.test_alias))calge,
count(decode(tsd.test_alias,'cclm',tsd.test_alias))cclm,
count(decode(tsd.test_alias,'cresk',tsd.test_alias))cresk,
count(decode(tsd.test_alias,'csnmn',tsd.test_alias))csnmn,
count(decode(tsd.test_alias,'clgus',tsd.test_alias))clgus,
count(decode(tsd.test_alias,'csp',tsd.test_alias))csp,
count(decode(tsd.test_alias,'cspb',tsd.test_alias))cspb,
count(decode(tsd.test_alias,'localtest',tsd.test_alias))localtest
FROM test_detail td,test_session_detail tsd,test_session ts,vueinstitutionsite a
WHERE td.test_detail_id = tsd.test_detail_id
AND tsd.test_session_id = ts.test_session_id
and a.inst_site_id = ts.institution_id
AND TRUNC(test_start_date) BETWEEN to_date('08/27/2009', 'MM/DD/YYYY') AND to_date('09/02/2009', 'MM/DD/YYYY')
GROUP BY ts.institution_id
order by institution_id
Plz help me ASAP
thanks,
RajI'm posting DDL scripts as a two posts due to maximum exceeding length
*5 tables are in Underlying view*
1)INSTITUTION
CREATE TABLE "CATTEMP"."INSTITUTION"
( "INSTITUTION_ID" NUMBER NOT NULL ENABLE,
"LEVEL_TYPE_ID" NUMBER NOT NULL ENABLE,
"REGION_CODE" VARCHAR2(4 BYTE) NOT NULL ENABLE,
"BELONGS_TO" NUMBER NOT NULL ENABLE,
"NAME" VARCHAR2(200 BYTE) NOT NULL ENABLE,
"DESCRIPTION" VARCHAR2(200 BYTE),
"ADDRESS_1" VARCHAR2(100 BYTE),
"ADDRESS_2" VARCHAR2(100 BYTE),
"CITY" VARCHAR2(30 BYTE),
"STATE" VARCHAR2(30 BYTE),
"ZIP" VARCHAR2(20 BYTE),
"COUNTRY" VARCHAR2(30 BYTE),
"LOCATION" VARCHAR2(30 BYTE),
"PHONE" VARCHAR2(20 BYTE),
"FAX" VARCHAR2(20 BYTE),
"OTHER" VARCHAR2(30 BYTE),
"INSTITUTION_CATEGORY" VARCHAR2(100 BYTE),
"INSTITUTION_TYPE" VARCHAR2(30 BYTE),
"IS_CB_MEMBER" CHAR(1 BYTE),
"ATB_TESTING" CHAR(1 BYTE),
"HOW_DID_YOU_HEAR" VARCHAR2(100 BYTE),
"FIRST_LOGIN_DATE" DATE,
"ACTIVE_STATUS" VARCHAR2(20 BYTE),
"AVAILABLE_TEST_UNITS" NUMBER,
"STUDENT_BODY_SIZE" VARCHAR2(30 BYTE),
"CREATED_ON" DATE DEFAULT SYSDATE,
"MODIFIED_ON" DATE DEFAULT SYSDATE,
"CREATED_BY" NUMBER,
"MODIFIED_BY" NUMBER,
"ACCUPLACER_USER" CHAR(1 BYTE),
"RESEND_MAIL_DATE" DATE,
"LAST_ACTIVITY_DATE" DATE,
"ACCT_ACTIVATION_DATE" DATE,
"INSTITUTION_ID_DISPLAY" VARCHAR2(10 BYTE),
"LAST_CB_UPDATE" DATE,
CONSTRAINT "PK_INSTITUTION" PRIMARY KEY ("INSTITUTION_ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT) LOCAL
(PARTITION "SYS_P8001"
TABLESPACE "CAT_IDX_TB1",
PARTITION "SYS_P8002"
TABLESPACE "CAT_IDX_TB2",
PARTITION "SYS_P8003"
TABLESPACE "CAT_IDX_TB3",
PARTITION "SYS_P8004"
TABLESPACE "CAT_IDX_TB4",
PARTITION "SYS_P8005"
TABLESPACE "CAT_IDX_TB5") ENABLE,
CONSTRAINT "UK_INSTITUTION" UNIQUE ("INSTITUTION_ID_DISPLAY")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ENABLE,
CONSTRAINT "FK_INSTITUTION1" FOREIGN KEY ("LEVEL_TYPE_ID")
REFERENCES "CATTEMP"."LEVEL_TYPE_MASTER" ("LEVEL_TYPE_ID") ENABLE,
CONSTRAINT "FK_INSTITUTION2" FOREIGN KEY ("REGION_CODE")
REFERENCES "CATTEMP"."REGION" ("REGION_CODE") ENABLE,
CONSTRAINT "FK_INSTITUTION3" FOREIGN KEY ("BELONGS_TO")
REFERENCES "CATTEMP"."INSTITUTION" ("INSTITUTION_ID") ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT)
TABLESPACE "CAT_DATA"
PARTITION BY HASH ("INSTITUTION_ID")
(PARTITION "SYS_P8001"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8002"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8003"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8004"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8005"
TABLESPACE "CAT_DATA") ;
COMMENT ON COLUMN "CATTEMP"."INSTITUTION"."LEVEL_TYPE_ID" IS 'IDENTIFIES WHETHER THIS IS AN INSTITUTION OR SITE';
COMMENT ON COLUMN "CATTEMP"."INSTITUTION"."REGION_CODE" IS 'REGION TO WHICH THE INSTITUTION BELONGS TO';
COMMENT ON COLUMN "CATTEMP"."INSTITUTION"."PHONE" IS 'PHONE NUMBER';
COMMENT ON COLUMN "CATTEMP"."INSTITUTION"."FAX" IS 'FAX NUMBER';
COMMENT ON COLUMN "CATTEMP"."INSTITUTION"."HOW_DID_YOU_HEAR" IS 'HOW DID YOU HEAR INFORMATION';
COMMENT ON COLUMN "CATTEMP"."INSTITUTION"."FIRST_LOGIN_DATE" IS 'USED TO FIND FIRST LOGIN DATE INFORMATION';
COMMENT ON COLUMN "CATTEMP"."INSTITUTION"."ACTIVE_STATUS" IS 'CURRENT ACTIVATION STATUS';
COMMENT ON COLUMN "CATTEMP"."INSTITUTION"."AVAILABLE_TEST_UNITS" IS 'AVAILABLE TEST UNITS WITH THE INSITUTION';
COMMENT ON COLUMN "CATTEMP"."INSTITUTION"."STUDENT_BODY_SIZE" IS 'STUDENT SIZE UNDER THE INSTITUTION';
COMMENT ON COLUMN "CATTEMP"."INSTITUTION"."CREATED_ON" IS 'INSITUTION CREATION DATE';
COMMENT ON COLUMN "CATTEMP"."INSTITUTION"."MODIFIED_ON" IS 'LAST MODIFIED DATE';
COMMENT ON TABLE "CATTEMP"."INSTITUTION" IS 'USED TO STORE THE DETAILS OF AN INSTITUTE (INSTITUTION, SITE)';
CREATE INDEX "CATTEMP"."FK_INSTITUTION1_I" ON "CATTEMP"."INSTITUTION" ("LEVEL_TYPE_ID")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ;
CREATE INDEX "CATTEMP"."FK_INSTITUTION2_I" ON "CATTEMP"."INSTITUTION" ("REGION_CODE")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ;
CREATE INDEX "CATTEMP"."INSTITUTION_IDX1" ON "CATTEMP"."INSTITUTION" ("BELONGS_TO", "LEVEL_TYPE_ID", "ACTIVE_STATUS")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ;
CREATE INDEX "CATTEMP"."INSTI_ID_NAME_COUN_DISP_IDX" ON "CATTEMP"."INSTITUTION" ("INSTITUTION_ID", "NAME", "COUNTRY", "INSTITUTION_ID_DISPLAY")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT_DATA" ;
CREATE INDEX "CATTEMP"."INSTUTITION_NC_IDX" ON "CATTEMP"."INSTITUTION" ("NAME")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT_DATA" ;
CREATE INDEX "CATTEMP"."INST_ID_DISP_IDX" ON "CATTEMP"."INSTITUTION" (SUBSTR("INSTITUTION_ID_DISPLAY",8,3))
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT_DATA" ;
CREATE UNIQUE INDEX "CATTEMP"."PK_INSTITUTION" ON "CATTEMP"."INSTITUTION" ("INSTITUTION_ID")
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT) LOCAL
(PARTITION "SYS_P8001"
TABLESPACE "CAT_IDX_TB1",
PARTITION "SYS_P8002"
TABLESPACE "CAT_IDX_TB2",
PARTITION "SYS_P8003"
TABLESPACE "CAT_IDX_TB3",
PARTITION "SYS_P8004"
TABLESPACE "CAT_IDX_TB4",
PARTITION "SYS_P8005"
TABLESPACE "CAT_IDX_TB5") ;
CREATE UNIQUE INDEX "CATTEMP"."UK_INSTITUTION" ON "CATTEMP"."INSTITUTION" ("INSTITUTION_ID_DISPLAY")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ;2)COUNTRY
CREATE TABLE "CATTEMP"."COUNTRY"
( "COUNTRY_CODE" VARCHAR2(10 BYTE) NOT NULL ENABLE,
"COUNTRY_NAME" VARCHAR2(30 BYTE),
"CREATED_ON" DATE DEFAULT SYSDATE,
"MODIFIED_ON" DATE DEFAULT SYSDATE,
"CREATED_BY" NUMBER,
"MODIFIED_BY" NUMBER,
CONSTRAINT "PK_COUNTRY" PRIMARY KEY ("COUNTRY_CODE")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT) LOCAL
(PARTITION "SYS_P7936"
TABLESPACE "CAT_IDX_TB1",
PARTITION "SYS_P7937"
TABLESPACE "CAT_IDX_TB2",
PARTITION "SYS_P7938"
TABLESPACE "CAT_IDX_TB3",
PARTITION "SYS_P7939"
TABLESPACE "CAT_IDX_TB4",
PARTITION "SYS_P7940"
TABLESPACE "CAT_IDX_TB5") ENABLE,
CONSTRAINT "UK_COUNTRY" UNIQUE ("COUNTRY_NAME")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT)
TABLESPACE "CAT_DATA"
PARTITION BY HASH ("COUNTRY_CODE")
(PARTITION "SYS_P7936"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P7937"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P7938"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P7939"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P7940"
TABLESPACE "CAT_DATA") ;
CREATE UNIQUE INDEX "CATTEMP"."PK_COUNTRY" ON "CATTEMP"."COUNTRY" ("COUNTRY_CODE")
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT) LOCAL
(PARTITION "SYS_P7936"
TABLESPACE "CAT_IDX_TB1",
PARTITION "SYS_P7937"
TABLESPACE "CAT_IDX_TB2",
PARTITION "SYS_P7938"
TABLESPACE "CAT_IDX_TB3",
PARTITION "SYS_P7939"
TABLESPACE "CAT_IDX_TB4",
PARTITION "SYS_P7940"
TABLESPACE "CAT_IDX_TB5") ;
CREATE UNIQUE INDEX "CATTEMP"."UK_COUNTRY" ON "CATTEMP"."COUNTRY" ("COUNTRY_NAME")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ;
3)REGION
CREATE TABLE "CATTEMP"."REGION"
( "REGION_CODE" VARCHAR2(4 BYTE) NOT NULL ENABLE,
"REGION_NAME" VARCHAR2(50 BYTE) NOT NULL ENABLE,
"CREATED_ON" DATE DEFAULT SYSDATE,
"MODIFIED_ON" DATE DEFAULT SYSDATE,
"CREATED_BY" NUMBER,
"MODIFIED_BY" NUMBER,
CONSTRAINT "PK_REGION" PRIMARY KEY ("REGION_CODE")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT) LOCAL
(PARTITION "SYS_P8101"
TABLESPACE "CAT_IDX_TB1",
PARTITION "SYS_P8102"
TABLESPACE "CAT_IDX_TB2",
PARTITION "SYS_P8103"
TABLESPACE "CAT_IDX_TB3",
PARTITION "SYS_P8104"
TABLESPACE "CAT_IDX_TB4",
PARTITION "SYS_P8105"
TABLESPACE "CAT_IDX_TB5") ENABLE,
CONSTRAINT "UK_REGION" UNIQUE ("REGION_NAME")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT)
TABLESPACE "CAT_DATA"
PARTITION BY HASH ("REGION_CODE")
(PARTITION "SYS_P8101"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8102"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8103"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8104"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8105"
TABLESPACE "CAT_DATA") ;
CREATE UNIQUE INDEX "CATTEMP"."PK_REGION" ON "CATTEMP"."REGION" ("REGION_CODE")
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT) LOCAL
(PARTITION "SYS_P8101"
TABLESPACE "CAT_IDX_TB1",
PARTITION "SYS_P8102"
TABLESPACE "CAT_IDX_TB2",
PARTITION "SYS_P8103"
TABLESPACE "CAT_IDX_TB3",
PARTITION "SYS_P8104"
TABLESPACE "CAT_IDX_TB4",
PARTITION "SYS_P8105"
TABLESPACE "CAT_IDX_TB5") ;
CREATE UNIQUE INDEX "CATTEMP"."UK_REGION" ON "CATTEMP"."REGION" ("REGION_NAME")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ;
4)
LEVEL_TYPE_MASTER
CREATE TABLE "CATTEMP"."LEVEL_TYPE_MASTER"
( "LEVEL_TYPE_ID" NUMBER NOT NULL ENABLE,
"LEVEL_TYPE_NAME" VARCHAR2(50 BYTE) NOT NULL ENABLE,
"DESCRIPTION" VARCHAR2(100 BYTE),
"CREATED_ON" DATE DEFAULT SYSDATE,
"MODIFIED_ON" DATE DEFAULT SYSDATE,
"CREATED_BY" NUMBER,
"MODIFIED_BY" NUMBER,
CONSTRAINT "PK_LEVEL_TYPE_MASTER" PRIMARY KEY ("LEVEL_TYPE_ID")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT) LOCAL
(PARTITION "SYS_P8031"
TABLESPACE "CAT_IDX_TB1",
PARTITION "SYS_P8032"
TABLESPACE "CAT_IDX_TB2",
PARTITION "SYS_P8033"
TABLESPACE "CAT_IDX_TB3",
PARTITION "SYS_P8034"
TABLESPACE "CAT_IDX_TB4",
PARTITION "SYS_P8035"
TABLESPACE "CAT_IDX_TB5") ENABLE,
CONSTRAINT "UK_LEVEL_TYPE_MASTER" UNIQUE ("LEVEL_TYPE_NAME")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT)
TABLESPACE "CAT_DATA"
PARTITION BY HASH ("LEVEL_TYPE_ID")
(PARTITION "SYS_P8031"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8032"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8033"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8034"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8035"
TABLESPACE "CAT_DATA") ;
CREATE UNIQUE INDEX "CATTEMP"."PK_LEVEL_TYPE_MASTER" ON "CATTEMP"."LEVEL_TYPE_MASTER" ("LEVEL_TYPE_ID")
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT) LOCAL
(PARTITION "SYS_P8031"
TABLESPACE "CAT_IDX_TB1",
PARTITION "SYS_P8032"
TABLESPACE "CAT_IDX_TB2",
PARTITION "SYS_P8033"
TABLESPACE "CAT_IDX_TB3",
PARTITION "SYS_P8034"
TABLESPACE "CAT_IDX_TB4",
PARTITION "SYS_P8035"
TABLESPACE "CAT_IDX_TB5") ;
CREATE UNIQUE INDEX "CATTEMP"."UK_LEVEL_TYPE_MASTER" ON "CATTEMP"."LEVEL_TYPE_MASTER" ("LEVEL_TYPE_NAME")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ;
5)STATE
CREATE TABLE "CATTEMP"."STATE"
( "STATE_NAME" VARCHAR2(30 BYTE) NOT NULL ENABLE,
"STATE_CODE" VARCHAR2(10 BYTE),
"COUNTRY_CODE" VARCHAR2(10 BYTE) NOT NULL ENABLE,
"REGION_CODE" VARCHAR2(4 BYTE),
"CREATED_ON" DATE DEFAULT SYSDATE,
"MODIFIED_ON" DATE DEFAULT SYSDATE,
"CREATED_BY" NUMBER,
"MODIFIED_BY" NUMBER,
CONSTRAINT "PK_STATE" PRIMARY KEY ("STATE_NAME", "COUNTRY_CODE")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT) LOCAL
(PARTITION "SYS_P8131"
TABLESPACE "CAT_IDX_TB1",
PARTITION "SYS_P8132"
TABLESPACE "CAT_IDX_TB2",
PARTITION "SYS_P8133"
TABLESPACE "CAT_IDX_TB3",
PARTITION "SYS_P8134"
TABLESPACE "CAT_IDX_TB4",
PARTITION "SYS_P8135"
TABLESPACE "CAT_IDX_TB5") ENABLE,
CONSTRAINT "UK_STATE" UNIQUE ("STATE_CODE")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ENABLE,
CONSTRAINT "FK_STATE1" FOREIGN KEY ("COUNTRY_CODE")
REFERENCES "CATTEMP"."COUNTRY" ("COUNTRY_CODE") ENABLE,
CONSTRAINT "FK_STATE2" FOREIGN KEY ("REGION_CODE")
REFERENCES "CATTEMP"."REGION" ("REGION_CODE") ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT)
TABLESPACE "CAT_DATA"
PARTITION BY HASH ("STATE_NAME","COUNTRY_CODE")
(PARTITION "SYS_P8131"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8132"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8133"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8134"
TABLESPACE "CAT_DATA",
PARTITION "SYS_P8135"
TABLESPACE "CAT_DATA") ;
CREATE INDEX "CATTEMP"."FK_STATE1_I" ON "CATTEMP"."STATE" ("COUNTRY_CODE")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ;
CREATE INDEX "CATTEMP"."FK_STATE2_I" ON "CATTEMP"."STATE" ("REGION_CODE")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ;
CREATE UNIQUE INDEX "CATTEMP"."PK_STATE" ON "CATTEMP"."STATE" ("STATE_NAME", "COUNTRY_CODE")
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT) LOCAL
(PARTITION "SYS_P8131"
TABLESPACE "CAT_IDX_TB1",
PARTITION "SYS_P8132"
TABLESPACE "CAT_IDX_TB2",
PARTITION "SYS_P8133"
TABLESPACE "CAT_IDX_TB3",
PARTITION "SYS_P8134"
TABLESPACE "CAT_IDX_TB4",
PARTITION "SYS_P8135"
TABLESPACE "CAT_IDX_TB5") ;
CREATE INDEX "CATTEMP"."STATE_NAME_CODE_IDX" ON "CATTEMP"."STATE" ("STATE_NAME", "STATE_CODE")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT_DATA" ;
CREATE INDEX "CATTEMP"."STATE_NAME_STATE_IDX" ON "CATTEMP"."STATE" ("STATE_NAME")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT_DATA" ;
CREATE UNIQUE INDEX "CATTEMP"."UK_STATE" ON "CATTEMP"."STATE" ("STATE_CODE")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "CAT" ;
Maybe you are looking for
-
Error in deploying the visual composer model
Hello friends, I have issue in deploying model in Visual Composer.I am able to compile the model successfully. While deploying the model I am getting following error: Error in compiling Flex application: java.lang.InternalError: Can't connect to
-
Issue with backup NCS via NFS (Cisco Prime NCS 1.2.0)
Hello, Does someone have issue with backup NCS via externally mounted location (NFS)? I have Cisco Prime NCS 1.2.0 and tried backup it to external resources, but I have issue with my free space: NCS/admin# backup ncs repository backup_nfs % Creating
-
My 6070 navigation display blanks out after 5 seco...
My 6070 navigation display blanks out after 5 seconds. Not enough for a 'silver surfer' I am not able to find the adjustment, and it is not in the handbook. Can anyone help. Many thanks Solved! Go to Solution.
-
No Response from Server at end of day: 4.03
We're using Weblogic 4.03 on Solaris. At the end of a busy day, users start submitting their transactions and some users start calling the help desk saying that performance is very slow and I believe they are getting "No Response from Server" from th
-
Mac OS X Server and Active Directory Replica
Hello, Has anyone ever encountered any problems when making a Mac OS X Leopard server an Active Directory Replica? We're working on this project and we want to make sure that we don't mess up our primary AD server when we configure this. Thanks so mu