Help on tuning this query
Hi all i have this query:
SELECT VTA.CO_VENDEDOR
,VTA.NB_VENDEDOR
,VTA.CO_CLASE_CLIENTE
,VTA.DE_CLASE_CLIENTE
,VTA.CO_CLIENTE
,VTA.NB_CLIENTE
,VTA.MN_VENDIDO
,NVL(DEV.MN_DEVUELTO,0) MN_DEVUELTO
,VTA.MN_VENDIDO - NVL(DEV.MN_DEVUELTO,0) MN_NETO_VENDIDO
,NVL(COB.MN_COBRADO,0) MN_COBRADO
,NVL(COB.MN_DESCUENTO,0) MN_DESCUENTO
,NVL(COB.MN_COBRADO,0) + NVL(COB.MN_DESCUENTO,0) MN_COBRADO_MAS_DESCUENTO
FROM (SELECT FCL.CTV_CO_CLASE_ORGANIZACION CO_CLASE_CLIENTE
,FCL.CTV_DE_CLASE_ORGANIZACION DE_CLASE_CLIENTE
,FCL.CO_ORGANIZACION CO_CLIENTE
,FCL.ORG_NB_CLIENTE NB_CLIENTE
,FCL.PER_CO_IDENTIFICACION_VENDEDOR CO_VENDEDOR
,FCL.PER_NB_PRIMER_NOMBRE_VENDEDOR||' '||
FCL.PER_NB_PRIMER_APELLIDO_VEND NB_VENDEDOR
,SUM((CA_PRODUCTO * (PR_PRODUCTO - NVL(PR_DESCUENTO_PRODUCTO,0))) * (1 - NVL(PC_DESCUENTO,0))) MN_VENDIDO
FROM S04_FACTURA_CLIENTE_TOTAL_R FCL
,S04_FACTURA_CLIENTE_PRD_TOT FPR
,(SELECT FCP.FAC_ID_FACTURA
,SUM(DDC.MN_DEBITO_CREDITO) /
SUM(FCP.CA_PRODUCTO * (FCP.PR_PRODUCTO - NVL(FCP.PR_DESCUENTO_PRODUCTO,0))) PC_DESCUENTO
FROM S04_DOCUMENTO_DEBITO_CREDITO_R DDC
,S04_FACTURA_CLIENTE_PRD_TOT FCP
WHERE DDC.ID_DOCUMENTO_REFERENCIA = FCP.FAC_ID_FACTURA
AND DDC.TDC_IN_DEBITO_CREDITO = 'C'
GROUP BY FCP.FAC_ID_FACTURA) DCT
WHERE FCL.ID_REGISTRO = FPR.FAC_ID_FACTURA
AND DCT.FAC_ID_FACTURA (+) = FPR.FAC_ID_FACTURA
AND FCL.FE_EMISION BETWEEN to_date('01112009','ddmmyyyy') AND to_date('29112009','ddmmyyyy')
AND FCL.ORG_ID_CLIENTE = NVL(NULL,FCL.ORG_ID_CLIENTE)
AND FCL.PER_ID_VENDEDOR = NVL(7647771,FCL.PER_ID_VENDEDOR)
AND FCL.CTV_CO_ESTADO_DOCUMENTO = 'EM'
AND FCL.UBG_ID_UBICACION_CLIENTE in (SELECT ID_REGISTRO
FROM S00_UBICACION_GEOGRAFICA
START WITH ID_REGISTRO = nvl(NULL, FCL.UBG_ID_UBICACION_CLIENTE)
CONNECT BY PRIOR ID_REGISTRO = UBG_ID_UBICACION_PADRE)
GROUP BY FCL.CTV_CO_CLASE_ORGANIZACION
,FCL.CTV_DE_CLASE_ORGANIZACION
,FCL.CO_ORGANIZACION
,FCL.ORG_NB_CLIENTE
,PER_CO_IDENTIFICACION_VENDEDOR
,PER_NB_PRIMER_NOMBRE_VENDEDOR||' '||
PER_NB_PRIMER_APELLIDO_VEND) VTA
,(SELECT NDC .CTV_CO_CLASE_ORGANIZACION CO_CLASE_CLIENTE
,NDC.CTV_DE_CLASE_ORGANIZACION DE_CLASE_CLIENTE
,NDC.CO_CLIENTE
,NDC.ORG_NB_CLIENTE NB_CLIENTE
,FCL.PER_CO_IDENTIFICACION_VENDEDOR CO_VENDEDOR
,FCL.PER_NB_PRIMER_NOMBRE_VENDEDOR||' '||
FCL.PER_NB_PRIMER_APELLIDO_VEND NB_VENDEDOR
,SUM(CA_PRODUCTO * (PR_PRODUCTO - NVL(PR_DESCUENTO_PRODUCTO,0))) MN_DEVUELTO
FROM S06_NOTA_DEBITO_CREDITO_TOT_R NDC
,S06_DETALLE_NOTA_DEB_CRED_TOT DND
,S04_FACTURA_CLIENTE_TOTAL_R FCL
WHERE NDC.ID_REGISTRO = DND.NDC_ID_NOTA_DEBITO_CREDITO
AND NDC.CTV_CO_TIPO_DOCUMENTO = SK00_BUSCAR.F_VCT('CO_TIPO_DOCUMENTO_NOTA_CREDITO_FISCAL')
AND NDC.CTV_CO_ESTADO_DOCUMENTO = SK00_BUSCAR.F_VCT('CO_ESTADO_DOCUMENTO_EMITIDO')
AND NDC.FE_EMISION BETWEEN to_date('01112009','ddmmyyyy') AND to_date('29112009','ddmmyyyy')
AND (NDC.CTV_CO_MOTIVO_NOTA = SK00_BUSCAR.F_VCT('CO_MOTIVO_NOE_DEVOLUCION')
OR NDC.CTV_CO_MOTIVO_NOTA = SK00_BUSCAR.F_VCT('CO_MOTIVO_AJUSTE_PRECIO_NCD'))
AND NDC.ORG_ID_CLIENTE = NVL(NULL,NDC.ORG_ID_CLIENTE)
AND FCL.ID_REGISTRO = NDC.FAC_ID_FACTURA
AND FCL.CTV_CO_ESTADO_DOCUMENTO = 'EM'
AND FCL.UBG_ID_UBICACION_CLIENTE in (SELECT ID_REGISTRO
FROM S00_UBICACION_GEOGRAFICA
START WITH ID_REGISTRO = nvl(NULL, FCL.UBG_ID_UBICACION_CLIENTE)
CONNECT BY PRIOR ID_REGISTRO = UBG_ID_UBICACION_PADRE)
GROUP BY NDC.CTV_CO_CLASE_ORGANIZACION
,NDC.CTV_DE_CLASE_ORGANIZACION
,NDC.CO_CLIENTE
,NDC.ORG_NB_CLIENTE
,FCL.PER_CO_IDENTIFICACION_VENDEDOR
,FCL.PER_NB_PRIMER_NOMBRE_VENDEDOR||' '||
FCL.PER_NB_PRIMER_APELLIDO_VEND) DEV
,(SELECT RCD .CTV_CO_CLASE_ORGANIZACION CO_CLASE_CLIENTE
,RCD.CTV_DE_CLASE_ORGANIZACION DE_CLASE_CLIENTE
,RCD.CO_ORGANIZACION CO_CLIENTE
,RCD.ORG_NB_DISTRIBUIDOR NB_CLIENTE
,FCL.PER_CO_IDENTIFICACION_VENDEDOR CO_VENDEDOR
,FCL.PER_NB_PRIMER_NOMBRE_VENDEDOR||' '||
FCL.PER_NB_PRIMER_APELLIDO_VEND NB_VENDEDOR
,SUM(RCD.MN_DESCUENTO) MN_DESCUENTO
,SUM(DECODE(SIGN(RCO.MN_COBRADO_ANTES - IVA.MN_IVA)
,-1
,RCD.MN_ABONO - ABS(RCO.MN_COBRADO_ANTES - IVA.MN_IVA)
,RCD.MN_ABONO)) MN_COBRADO
FROM S06_RECIBO_COBRO_DOC_TOTAL_R RCD
,S04_FACTURA_CLIENTE_TOTAL_R FCL
,(SELECT ID_DOCUMENTO_REFERENCIA FAC_ID_FACTURA
,NVL(SUM(MN_DEBITO_CREDITO),0) MN_IVA
FROM S04_DOCUMENTO_DEBITO_CREDITO_R
WHERE TDC_CO_TIPO_DEBITO_CREDITO = SK00_BUSCAR.F_VCT('CO_TIPO_DEBITO_IVA')
GROUP BY ID_DOCUMENTO_REFERENCIA) IVA
,(SELECT ID_REFERENCIA FAC_ID_FACTURA
,NVL(SUM(MN_ABONO),0) MN_COBRADO_ANTES
FROM S06_RECIBO_COBRO_DOC_TOTAL_R
WHERE FE_EMISION < to_date('01112009','ddmmyyyy')
GROUP BY ID_REFERENCIA) RCO
WHERE RCD.CTV_CO_ESTADO_DOCUMENTO = SK00_BUSCAR.F_VCT('CO_ESTADO_DOCUMENTO_EMITIDO')
AND RCD.FE_EMISION BETWEEN to_date('01112009','ddmmyyyy') AND to_date('29112009','ddmmyyyy')
AND RCD.ORG_ID_ORGANIZACION = NVL(NULL,RCD.ORG_ID_ORGANIZACION)
AND FCL.CTV_CO_ESTADO_DOCUMENTO = 'EM'
AND FCL.ID_REGISTRO = RCD.ID_REFERENCIA
AND FCL.UBG_ID_UBICACION_CLIENTE in (SELECT ID_REGISTRO
FROM S00_UBICACION_GEOGRAFICA
START WITH ID_REGISTRO = nvl(NULL, FCL.UBG_ID_UBICACION_CLIENTE)
CONNECT BY PRIOR ID_REGISTRO = UBG_ID_UBICACION_PADRE)
AND IVA.FAC_ID_FACTURA (+) = FCL.ID_REGISTRO
AND RCO.FAC_ID_FACTURA (+) = FCL.ID_REGISTRO
GROUP BY RCD.CTV_CO_CLASE_ORGANIZACION
,RCD.CTV_DE_CLASE_ORGANIZACION
,RCD.CO_ORGANIZACION
,RCD.ORG_NB_DISTRIBUIDOR
,FCL.PER_CO_IDENTIFICACION_VENDEDOR
,FCL.PER_NB_PRIMER_NOMBRE_VENDEDOR||' '||
FCL.PER_NB_PRIMER_APELLIDO_VEND) COB
WHERE VTA.CO_CLIENTE = DEV.CO_CLIENTE (+)
AND VTA.CO_VENDEDOR = DEV.CO_VENDEDOR (+)
AND VTA.CO_CLIENTE = COB.CO_CLIENTE (+)
AND VTA.CO_VENDEDOR = COB.CO_VENDEDOR (+)
ORDER BY VTA.NB_VENDEDOR
,VTA.CO_CLIENTE
Is there a way i can influence the join method on this query ...?
It's an XE DB.
Regards, Luis ...!
THIS IS THE PLAN:
SQL> /
Execution Plan
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=79006 Card=1 Bytes
=253)
1 0 SORT (ORDER BY) (Cost=79006 Card=1 Bytes=253)
2 1 HASH JOIN (OUTER) (Cost=79005 Card=1 Bytes=253)
3 2 HASH JOIN (OUTER) (Cost=78538 Card=1 Bytes=211)
4 3 VIEW (Cost=78478 Card=1 Bytes=182)
5 4 HASH (GROUP BY) (Cost=78478 Card=1 Bytes=232)
6 5 FILTER
7 6 HASH JOIN (OUTER) (Cost=78469 Card=1 Bytes=232
8 7 TABLE ACCESS (BY INDEX ROWID) OF 'T04_FACTUR
A_PRODUCTO' (TABLE) (Cost=2 Card=1 Bytes=46)
9 8 NESTED LOOPS (Cost=25 Card=1 Bytes=213)
10 9 VIEW OF 'V04_FACTURA_CLIENTE_TOTAL_R' (V
IEW) (Cost=23 Card=1 Bytes=167)
11 10 NESTED LOOPS (Cost=23 Card=1 Bytes=284
12 11 NESTED LOOPS (OUTER) (Cost=23 Card=1
Bytes=278)
13 12 HASH JOIN (SEMI) (Cost=23 Card=1 B
ytes=272)
14 13 NESTED LOOPS (Cost=17 Card=1 Byt
es=259)
15 14 NESTED LOOPS (Cost=16 Card=1 B
ytes=218)
16 15 NESTED LOOPS (OUTER) (Cost=1
6 Card=1 Bytes=212)
17 16 NESTED LOOPS (Cost=15 Card
=1 Bytes=179)
18 17 NESTED LOOPS (Cost=15 Ca
rd=1 Bytes=173)
19 18 NESTED LOOPS (OUTER) (
Cost=14 Card=1 Bytes=162)
20 19 NESTED LOOPS (OUTER)
(Cost=14 Card=1 Bytes=156)
21 20 NESTED LOOPS (OUTE
R) (Cost=14 Card=1 Bytes=150)
22 21 NESTED LOOPS (OU
TER) (Cost=14 Card=1 Bytes=144)
23 22 NESTED LOOPS (
Cost=14 Card=1 Bytes=105)
24 23 SORT (UNIQUE
) (Cost=2 Card=1 Bytes=13)
25 24 TABLE ACCE
SS (FULL) OF 'T00_GRUPO_DATO_USUARIO_ACTIVO' (TABLE (TEMP))
(Cost=2 Card=1 Bytes=13)
26 23 TABLE ACCESS
(BY INDEX ROWID) OF 'T04_FACTURA' (TABLE) (Cost=11 Card=1 B
ytes=92)
27 26 INDEX (RAN
GE SCAN) OF 'I04_FAC_FE_EMISION' (INDEX) (Cost=10 Card=2)
28 22 TABLE ACCESS (
BY INDEX ROWID) OF 'T03_EMPRESA_SUCURSAL' (TABLE) (Cost=0 Ca
rd=1 Bytes=39)
29 28 INDEX (RANGE
SCAN) OF 'I03_EMS_EMP' (INDEX) (Cost=0 Card=1)
30 21 INDEX (UNIQUE SC
AN) OF 'PK_PRY' (INDEX (UNIQUE)) (Cost=0 Card=1 Bytes=6)
31 20 INDEX (UNIQUE SCAN
) OF 'PK_CAJ' (INDEX (UNIQUE)) (Cost=0 Card=1 Bytes=6)
32 19 INDEX (UNIQUE SCAN)
OF 'PK_PEC' (INDEX (UNIQUE)) (Cost=0 Card=1 Bytes=6)
33 18 TABLE ACCESS (BY INDEX
ROWID) OF 'T00_CONTENIDO_TABLA_VIRTUAL' (TABLE) (Cost=1 Car
d=1 Bytes=11)
34 33 INDEX (UNIQUE SCAN)
OF 'PK_CTV' (INDEX (UNIQUE)) (Cost=0 Card=1)
SORRY EXPLAIN OUTPUT TRUNCATED DUE TO SPACE RESTRICION .....
Any help would be greatly appreciated.
I believe there must be a way to influence on the tha costly HASH JOIN operation
SQL> SPOOL OFF
Similar Messages
-
Hi,
I have a query in my proj where the same table is looked up twice in the same query.
Can anybody suggest in improving the performance of this query?
select * from table1 a1 where (a1.column1, a1.column2, a1.column3, a1.column4, a1.column5, a1.column6, a1.column7, a1.column8, a1.column9,
a1.column10) in ( select a2.column1, a2.column2, a2.column3, a2.column4, a2.column5, a2.column6, a2.column7, a2.column8, a2.column9,
a2.column10 from table1 a2 where column20 = '<condn>')
The table1 used here is same in outer query as well as the sub query. this is a example of what we use here, and the table1 contains 30 million rows. Though, creating index with 10 columns can be a option, we already have a unique index with 11 columns(which includes 10 from this query) and will that be helpful in anyway? or the same existing index can be forced?
Thanks a lot for ur timeDepending on the selectivity of column20 I am not sure Index is the best way to go. It might perform better with two full scans and a hash-join.
Anyway, I do prefer the syntax:
select /*+ leading(a2) */ a1.*
from table1 a1, table1 a2
where a2.column20 = '<condn>'
and a1.column1 = a2.column1
and a1.column2 = a2.column2
and a1.column3 = a2.column3
and a1.column4 = a2.column4
and a1.column5 = a2.column5
and a1.column6 = a2.column6
and a1.column7 = a2.column7
and a1.column8 = a2.column8
and a1.column9 = a2.column9
and a1.column10 = a2.column10;I've added a leading hint to tell oracle that the start table is a2. Might be useless.
Ensure your stats are up to date. You might need histograms here if your column20 is skewed.
Hope this helps,
François
Edited by: Francois Berger on Oct 24, 2008 1:47 AM -
solved need help in tuning this Query
hi frs,
i have created a query like this
pls help
Regards
Rajesh
Message was edited by:
Rajesh.mani
Message was edited by:
Rajesh.maniCode and explain plan should be between [pre] and [/pre] or [code] and [/code] tags like this.
[pre]Code[/pre]An now explain plan
[code]Execution plan
[/code]
Cheers
Sarma. -
Plz help in tuning this query......
SELECT "LAN","VEF_REF_NO","VF_TYPE_CODE","APPLICANT_TYPE","MANDATORY","OPTIONAL","COMPLETE","DT_COMPLETED","REFIRENO","ROLE","USER_ID","DT_LASTUPDATED","TEMPLATEFIRED"
FROM T_VER_STRATEGY_DETAILS M
WHERE VF_TYPE_CODE =1 AND
APPLICANT_TYPE ='A' AND
DT_LASTUPDATED=
(SELECT MAX(DT_LASTUPDATED)
FROM T_VER_STRATEGY_DETAILS
WHERE LAN = M.LAN AND
VF_TYPE_CODE =1 AND APPLICANT_TYPE ='A')
This seems to be a correlated query.
i tried using combined index on
(VF_TYPE_CODE ,APPLICANT_TYPE ,DT_LASTUPDATED)
and another index on
(LAN,VF_TYPE_CODE ,APPLICANT_TYPE ) but the plan or cost remains unchained.
plz help[url http://forums.oracle.com/forums/thread.jspa?threadID=501834&tstart=0]When your query takes too long...
-
Please help me tuning this query...
Hi all,
Can any body suggest some changes (synthatic) so that it can improve its performance... taking too much time...
This is a query used in oracle report...
SELECT distinct cc.seg1,cc.seg2,cc.seg3,cc.seg4,cc.seg5,cc.seg6,cc.seg7,cc.seg8,cc.code_combination_id code_comb_id,
r.flex_validation_rule_name cv_rule,gl.currency_code currency1,
(NVL (gjl.accounted_dr, 0) - NVL (gjl.accounted_cr, 0)) trans_amount,
gjh.doc_sequence_value doc_num,
gjs.user_je_source_name je_source, gjc.user_je_category_name je_category,
fu.user_name last_updated_by,(NVL (gb.begin_balance_dr, 0)
- NVL (gb.begin_balance_cr, 0))
+ (NVL (gb.period_net_dr_beq, 0)
- NVL (gb.period_net_cr_beq, 0)) balance,
gjh.last_update_date last_updated_date,gjl.effective_date
FROM gl_code_combinations cc,
fnd_flex_vdation_rules_vl r,
fnd_flex_validation_rule_lines l,
gl_je_headers gjh,
gl_je_lines gjl,
gl_balances gb,
fnd_user fu,
gl_je_categories gjc,
gl_je_sources gjs,
gl_ledgers gl
WHERE cc.enabled_flag = 'Y'
AND NVL (cc.end_date_active, SYSDATE + 1) > SYSDATE
AND cc.chart_of_accounts_id = :p_chart_of_accounts_id
AND r.id_flex_num = cc.chart_of_accounts_id
AND r.id_flex_code = 'GL#'
AND r.application_id = 101
AND gjs.je_source_name=gjh.je_source
AND gjc.je_category_name=gjh.je_category
AND l.application_id = r.application_id
AND gb.code_combination_id=cc.code_combination_id
AND gjh.period_name=gb.period_name
AND r.enabled_flag = 'Y'
AND NVL (r.end_date_active, SYSDATE + 1) > SYSDATE
AND l.id_flex_code = r.id_flex_code
AND l.id_flex_num = r.id_flex_num
AND l.flex_validation_rule_name = r.flex_validation_rule_name
AND l.include_exclude_indicator = 'E'
AND gjl.code_combination_id = gb.code_combination_id
AND gjh.je_header_id = gjl.je_header_id
AND gjh.status = 'P'
AND gl.ledger_id=gjh.ledger_id
and gl.ledger_id=:p_ledger_id
AND gjh.last_updated_by = fu.user_id
and (gjh.last_update_date,gjl.last_update_date)=(
SELECT MAX (a.last_update_date) ,MAX(b.last_update_date)
FROM gl_je_headers a, gl_je_lines b
WHERE b.code_combination_id = cc.code_combination_id
AND a.je_header_id = b.je_header_id
AND a.status = 'P'
AND ROWNUM = 1)
and (NVL (gjl.accounted_dr, 0) - NVL (gjl.accounted_cr, 0))=(select (NVL (accounted_dr, 0) - NVL (accounted_cr, 0)) from gl_je_lines
where je_header_id=gjh.je_header_id and code_combination_id=cc.code_combination_id and period_name=gjh.period_name and
last_update_date=gjh.last_update_date and rownum=1)
and (NVL (gb.begin_balance_dr, 0)
- NVL (gb.begin_balance_cr, 0))
+ (NVL (gb.period_net_dr_beq, 0)
- NVL (gb.period_net_cr_beq, 0))=(select max((NVL (begin_balance_dr, 0)
- NVL (begin_balance_cr, 0))
+ (NVL (period_net_dr_beq, 0)
- NVL (period_net_cr_beq, 0))) from gl_balances where code_combination_id=cc.code_combination_id
and period_name=gb.period_name)
and gjl.description=(select description from gl_je_lines where code_combination_id=cc.code_combination_id and
je_header_id=gjh.je_header_id and period_name=gb.period_name and rownum=1)
AND cc.seg1 BETWEEN NVL (SUBSTR (l.concatenated_segments_low, 1, 3),
cc.seg1
AND NVL (SUBSTR (l.concatenated_segments_high, 1, 3),
cc.seg1
AND cc.seg2 BETWEEN NVL (SUBSTR (l.concatenated_segments_low, 5, 4),
cc.seg2
AND NVL (SUBSTR (l.concatenated_segments_high, 5, 4),
cc.seg2
AND cc.seg3 BETWEEN NVL (SUBSTR (l.concatenated_segments_low, 10, 4),
cc.segt3
AND NVL (SUBSTR (l.concatenated_segments_high, 10, 4),
cc.seg3
AND cc.seg4 BETWEEN NVL (SUBSTR (l.concatenated_segments_low, 15, 3),
cc.seg4
AND NVL (SUBSTR (l.concatenated_segments_high, 15, 3),
cc.seg4
AND cc.seg5 BETWEEN NVL (SUBSTR (l.concatenated_segments_low, 19, 6),
cc.seg5
AND NVL (SUBSTR (l.concatenated_segments_high, 19, 6),
cc.seg5
AND cc.seg6 BETWEEN NVL (SUBSTR (l.concatenated_segments_low, 26, 4),
cc.segment6
AND NVL (SUBSTR (l.concatenated_segments_high, 26, 4),
cc.seg6
AND cc.seg7 BETWEEN NVL (SUBSTR (l.concatenated_segments_low, 31, 6),
cc.seg7
AND NVL (SUBSTR (l.concatenated_segments_high, 31, 6),
cc.seg7
AND cc.seg8 BETWEEN NVL (SUBSTR (l.concatenated_segments_low, 38, 6),
cc.seg8
AND NVL (SUBSTR (l.concatenated_segments_high, 38, 6),
cc.seg8)Thanks for help
aspDear all,
the folliwing is explain plan for above query...
<ExplainPlan>
- <PlanElement object_ID="0" id="0" operation="SELECT STATEMENT" optimizer="ALL_ROWS" cost="1,417" cardinality="1" bytes="477" cpu_cost="263,995,086" io_cost="1,385" time="18">
- <PlanElements>
- <PlanElement object_ID="0" id="1" operation="HASH" option="UNIQUE" cost="1,417" cardinality="1" bytes="477" cpu_cost="263,995,086" io_cost="1,385" time="18">
- <PlanElements>
- <PlanElement object_ID="0" id="2" operation="FILTER" filter_predicates="("GJH"."LAST_UPDATE_DATE","GJL"."LAST_UPDATE_DATE")= (SELECT MAX("A"."LAST_UPDATE_DATE"),MAX("B"."LAST_UPDATE_DATE") FROM "GL"."GL_JE_LINES" "B","GL"."GL_JE_HEADERS" "A" WHERE ROWNUM=1 AND "A"."JE_HEADER_ID"="B"."JE_HEADER_ID" AND "A"."STATUS"='P' AND "B"."CODE_COMBINATION_ID"=:B1) AND NVL("GJL"."ACCOUNTED_DR",0)-NVL("GJL"."ACCOUNTED_CR",0)= (SELECT NVL("ACCOUNTED_DR",0)-NVL("ACCOUNTED_CR",0) FROM "GL"."GL_JE_LINES" "GL_JE_LINES" WHERE ROWNUM=1 AND "PERIOD_NAME"=:B2 AND "CODE_COMBINATION_ID"=:B3 AND "JE_HEADER_ID"=:B4 AND "LAST_UPDATE_DATE"=:B5) AND NVL("GB"."BEGIN_BALANCE_DR",0)-NVL("GB"."BEGIN_BALANCE_CR",0)+(NVL("GB"."PERIOD_NET_DR_BEQ",0)-NVL("GB"."PERIOD_NET_CR_BEQ",0))= (SELECT MAX(NVL("BEGIN_BALANCE_DR",0)-NVL("BEGIN_BALANCE_CR",0)+(NVL("PERIOD_NET_DR_BEQ",0)-NVL("PERIOD_NET_CR_BEQ",0))) FROM "GL"."GL_BALANCES" "GL_BALANCES" WHERE "PERIOD_NAME"=:B6 AND "CODE_COMBINATION_ID"=:B7)">
- <PlanElements>
- <PlanElement object_ID="0" id="3" operation="NESTED LOOPS" cost="1,262" cardinality="1" bytes="477" cpu_cost="254,376,045" io_cost="1,231" time="16">
- <PlanElements>
- <PlanElement object_ID="0" id="4" operation="NESTED LOOPS" cost="1,261" cardinality="1" bytes="464" cpu_cost="254,366,853" io_cost="1,230" time="16">
- <PlanElements>
- <PlanElement object_ID="0" id="5" operation="NESTED LOOPS" cost="1,260" cardinality="1" bytes="433" cpu_cost="254,357,622" io_cost="1,229" time="16">
- <PlanElements>
- <PlanElement object_ID="0" id="6" operation="NESTED LOOPS" cost="1,259" cardinality="1" bytes="402" cpu_cost="254,348,331" io_cost="1,228" time="16">
- <PlanElements>
- <PlanElement object_ID="0" id="7" operation="NESTED LOOPS" cost="1,258" cardinality="1" bytes="350" cpu_cost="254,337,522" io_cost="1,227" time="16">
- <PlanElements>
- <PlanElement object_ID="0" id="8" operation="NESTED LOOPS" cost="1,239" cardinality="1" bytes="273" cpu_cost="254,166,811" io_cost="1,208" time="15">
- <PlanElements>
- <PlanElement object_ID="0" id="9" operation="HASH JOIN" cost="1,184" cardinality="1" bytes="248" cpu_cost="253,727,112" io_cost="1,153" access_predicates=""B"."ID_FLEX_NUM"="CC"."CHART_OF_ACCOUNTS_ID"" filter_predicates=""CC"."SEGMENT1">=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_LOW",1,3),"CC"."SEGMENT1") AND "CC"."SEGMENT1"<=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_HIGH",1,3),"CC"."SEGMENT1") AND "CC"."SEGMENT2">=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_LOW",5,4),"CC"."SEGMENT2") AND "CC"."SEGMENT2"<=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_HIGH",5,4),"CC"."SEGMENT2") AND "CC"."SEGMENT3">=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_LOW",10,4),"CC"."SEGMENT3") AND "CC"."SEGMENT3"<=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_HIGH",10,4),"CC"."SEGMENT3") AND "CC"."SEGMENT4">=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_LOW",15,3),"CC"."SEGMENT4") AND "CC"."SEGMENT4"<=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_HIGH",15,3),"CC"."SEGMENT4") AND "CC"."SEGMENT5">=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_LOW",19,6),"CC"."SEGMENT5") AND "CC"."SEGMENT5"<=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_HIGH",19,6),"CC"."SEGMENT5") AND "CC"."SEGMENT6">=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_LOW",26,4),"CC"."SEGMENT6") AND "CC"."SEGMENT6"<=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_HIGH",26,4),"CC"."SEGMENT6") AND "CC"."SEGMENT7">=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_LOW",31,6),"CC"."SEGMENT7") AND "CC"."SEGMENT7"<=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_HIGH",31,6),"CC"."SEGMENT7") AND "CC"."SEGMENT8">=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_LOW",38,6),"CC"."SEGMENT8") AND "CC"."SEGMENT8"<=NVL(SUBSTR("L"."CONCATENATED_SEGMENTS_HIGH",38,6),"CC"."SEGMENT8")" time="15">
- <PlanElements>
- <PlanElement object_ID="1" id="10" operation="TABLE ACCESS" option="BY INDEX ROWID" optimizer="ANALYZED" object_owner="APPLSYS" object_name="FND_FLEX_VALIDATION_RULE_LINES" object_type="TABLE" object_instance="3" cost="3" cardinality="1" bytes="119" cpu_cost="49,909" io_cost="3" filter_predicates=""L"."INCLUDE_EXCLUDE_INDICATOR"='E'" time="1">
- <PlanElements>
- <PlanElement object_ID="0" id="11" operation="NESTED LOOPS" cost="6" cardinality="1" bytes="189" cpu_cost="75,588" io_cost="6" time="1">
- <PlanElements>
- <PlanElement object_ID="0" id="12" operation="NESTED LOOPS" cost="3" cardinality="1" bytes="70" cpu_cost="25,679" io_cost="3" time="1">
- <PlanElements>
- <PlanElement object_ID="0" id="13" operation="NESTED LOOPS" cost="3" cardinality="1" bytes="39" cpu_cost="23,779" io_cost="3" time="1">
- <PlanElements>
- <PlanElement object_ID="2" id="14" operation="TABLE ACCESS" option="BY INDEX ROWID" optimizer="ANALYZED" object_owner="GL" object_name="GL_LEDGERS" object_type="TABLE" object_instance="10" cost="1" cardinality="1" bytes="8" cpu_cost="8,541" io_cost="1" time="1">
- <PlanElements>
<PlanElement object_ID="3" id="15" operation="INDEX" option="UNIQUE SCAN" optimizer="ANALYZED" object_owner="GL" object_name="GL_LEDGERS_U2" object_type="INDEX (UNIQUE)" search_columns="1" cost="0" cardinality="1" cpu_cost="1,050" io_cost="0" access_predicates=""GL"."LEDGER_ID"=TO_NUMBER(:P_LEDGER_ID)" time="1" />
</PlanElements>
</PlanElement>
- <PlanElement object_ID="4" id="16" operation="TABLE ACCESS" option="BY INDEX ROWID" optimizer="ANALYZED" object_owner="APPLSYS" object_name="FND_FLEX_VALIDATION_RULES" object_type="TABLE" object_instance="19" cost="2" cardinality="1" bytes="31" cpu_cost="15,238" io_cost="2" filter_predicates=""B"."ENABLED_FLAG"='Y' AND NVL("B"."END_DATE_ACTIVE",SYSDATE@!+1)>SYSDATE@!" time="1">
- <PlanElements>
<PlanElement object_ID="5" id="17" operation="INDEX" option="RANGE SCAN" optimizer="ANALYZED" object_owner="APPLSYS" object_name="FND_FLEX_VALIDATION_RULES_U1" object_type="INDEX (UNIQUE)" search_columns="3" cost="1" cardinality="1" cpu_cost="7,321" io_cost="1" access_predicates=""B"."APPLICATION_ID"=101 AND "B"."ID_FLEX_CODE"='GL#' AND "B"."ID_FLEX_NUM"=TO_NUMBER(:P_CHART_OF_ACCOUNTS_ID)" time="1" />
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
<PlanElement object_ID="6" id="18" operation="INDEX" option="UNIQUE SCAN" optimizer="ANALYZED" object_owner="APPLSYS" object_name="FND_FLEX_VDATION_RULES_TL_U1" object_type="INDEX (UNIQUE)" search_columns="5" cost="0" cardinality="1" bytes="31" cpu_cost="1,900" io_cost="0" access_predicates=""T"."APPLICATION_ID"=101 AND "T"."ID_FLEX_CODE"='GL#' AND "T"."ID_FLEX_NUM"=TO_NUMBER(:P_CHART_OF_ACCOUNTS_ID) AND "B"."FLEX_VALIDATION_RULE_NAME"="T"."FLEX_VALIDATION_RULE_NAME" AND "T"."LANGUAGE"=USERENV('LANG')" time="1" />
</PlanElements>
</PlanElement>
<PlanElement object_ID="7" id="19" operation="INDEX" option="RANGE SCAN" optimizer="ANALYZED" object_owner="APPLSYS" object_name="FND_FLEX_VAL_RULE_LINES_N1" object_type="INDEX" search_columns="4" cost="1" cardinality="41" cpu_cost="16,371" io_cost="1" access_predicates=""L"."APPLICATION_ID"=101 AND "L"."ID_FLEX_CODE"='GL#' AND "L"."ID_FLEX_NUM"=TO_NUMBER(:P_CHART_OF_ACCOUNTS_ID) AND "L"."FLEX_VALIDATION_RULE_NAME"="B"."FLEX_VALIDATION_RULE_NAME"" time="1" />
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
<PlanElement object_ID="8" id="20" operation="TABLE ACCESS" option="FULL" optimizer="ANALYZED" object_owner="GL" object_name="GL_CODE_COMBINATIONS" object_type="TABLE" object_instance="1" cost="1,177" cardinality="1,088" bytes="64,192" cpu_cost="249,419,570" io_cost="1,147" filter_predicates=""CC"."ENABLED_FLAG"='Y' AND "CC"."CHART_OF_ACCOUNTS_ID"=TO_NUMBER(:P_CHART_OF_ACCOUNTS_ID) AND NVL("CC"."END_DATE_ACTIVE",SYSDATE@!+1)>SYSDATE@!" time="15" />
</PlanElements>
</PlanElement>
- <PlanElement object_ID="9" id="21" operation="TABLE ACCESS" option="BY INDEX ROWID" optimizer="ANALYZED" object_owner="GL" object_name="GL_BALANCES" object_type="TABLE" object_instance="6" cost="55" cardinality="52" bytes="1,300" cpu_cost="439,699" io_cost="55" time="1">
- <PlanElements>
<PlanElement object_ID="10" id="22" operation="INDEX" option="RANGE SCAN" optimizer="ANALYZED" object_owner="GL" object_name="GL_BALANCES_N1" object_type="INDEX" search_columns="1" cost="2" cardinality="52" cpu_cost="25,693" io_cost="2" access_predicates=""GB"."CODE_COMBINATION_ID"="CC"."CODE_COMBINATION_ID"" time="1" />
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
- <PlanElement object_ID="11" id="23" operation="TABLE ACCESS" option="BY INDEX ROWID" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_LINES" object_type="TABLE" object_instance="5" cost="19" cardinality="40" bytes="3,080" cpu_cost="170,710" io_cost="19" time="1">
- <PlanElements>
<PlanElement object_ID="12" id="24" operation="INDEX" option="RANGE SCAN" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_LINES_N1" object_type="INDEX" search_columns="1" cost="2" cardinality="49" cpu_cost="24,693" io_cost="2" access_predicates=""GJL"."CODE_COMBINATION_ID"="GB"."CODE_COMBINATION_ID"" time="1" />
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
- <PlanElement object_ID="13" id="25" operation="TABLE ACCESS" option="BY INDEX ROWID" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_HEADERS" object_type="TABLE" object_instance="4" cost="1" cardinality="1" bytes="52" cpu_cost="10,809" io_cost="1" filter_predicates=""GJH"."STATUS"='P' AND "GJH"."LEDGER_ID"=TO_NUMBER(:P_LEDGER_ID) AND "GJH"."PERIOD_NAME"="GB"."PERIOD_NAME"" time="1">
- <PlanElements>
- <PlanElement object_ID="14" id="26" operation="INDEX" option="UNIQUE SCAN" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_HEADERS_U1" object_type="INDEX (UNIQUE)" search_columns="1" cost="0" cardinality="1" cpu_cost="1,950" io_cost="0" access_predicates=""GJH"."JE_HEADER_ID"="GJL"."JE_HEADER_ID"" filter_predicates=""GJL"."DESCRIPTION"= (SELECT "DESCRIPTION" FROM "GL"."GL_JE_LINES" "GL_JE_LINES" WHERE ROWNUM=1 AND "PERIOD_NAME"=:B1 AND "CODE_COMBINATION_ID"=:B2 AND "JE_HEADER_ID"=:B3)" time="1">
- <PlanElements>
- <PlanElement object_ID="0" id="27" operation="COUNT" option="STOPKEY" filter_predicates="ROWNUM=1">
- <PlanElements>
- <PlanElement object_ID="11" id="28" operation="TABLE ACCESS" option="BY INDEX ROWID" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_LINES" object_type="TABLE" object_instance="15" cost="5" cardinality="1" bytes="62" cpu_cost="39,168" io_cost="5" filter_predicates=""JE_HEADER_ID"=:B1" time="1">
- <PlanElements>
<PlanElement object_ID="12" id="29" operation="INDEX" option="RANGE SCAN" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_LINES_N1" object_type="INDEX" search_columns="2" cost="3" cardinality="4" cpu_cost="22,364" io_cost="3" access_predicates=""CODE_COMBINATION_ID"=:B1 AND "PERIOD_NAME"=:B2" time="1" />
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
- <PlanElement object_ID="15" id="30" operation="TABLE ACCESS" option="BY INDEX ROWID" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_SOURCES_TL" object_type="TABLE" object_instance="16" cost="1" cardinality="2" bytes="62" cpu_cost="9,291" io_cost="1" time="1">
- <PlanElements>
<PlanElement object_ID="16" id="31" operation="INDEX" option="UNIQUE SCAN" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_SOURCES_TL_U1" object_type="INDEX (UNIQUE)" search_columns="2" cost="0" cardinality="1" cpu_cost="1,900" io_cost="0" access_predicates=""JE_SOURCE_NAME"="GJH"."JE_SOURCE" AND "LANGUAGE"=USERENV('LANG')" time="1" />
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
- <PlanElement object_ID="17" id="32" operation="TABLE ACCESS" option="BY INDEX ROWID" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_CATEGORIES_TL" object_type="TABLE" object_instance="17" cost="1" cardinality="2" bytes="62" cpu_cost="9,231" io_cost="1" time="1">
- <PlanElements>
<PlanElement object_ID="18" id="33" operation="INDEX" option="UNIQUE SCAN" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_CATEGORIES_TL_U1" object_type="INDEX (UNIQUE)" search_columns="2" cost="0" cardinality="1" cpu_cost="1,900" io_cost="0" access_predicates=""JE_CATEGORY_NAME"="GJH"."JE_CATEGORY" AND "LANGUAGE"=USERENV('LANG')" time="1" />
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
- <PlanElement object_ID="19" id="34" operation="TABLE ACCESS" option="BY INDEX ROWID" optimizer="ANALYZED" object_owner="APPLSYS" object_name="FND_USER" object_type="TABLE" object_instance="7" cost="1" cardinality="1" bytes="13" cpu_cost="9,191" io_cost="1" time="1">
- <PlanElements>
<PlanElement object_ID="20" id="35" operation="INDEX" option="UNIQUE SCAN" optimizer="ANALYZED" object_owner="APPLSYS" object_name="FND_USER_U1" object_type="INDEX (UNIQUE)" search_columns="1" cost="0" cardinality="1" cpu_cost="1,900" io_cost="0" access_predicates=""GJH"."LAST_UPDATED_BY"="FU"."USER_ID"" time="1" />
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
- <PlanElement object_ID="0" id="36" operation="SORT" option="AGGREGATE" cardinality="1" bytes="33">
- <PlanElements>
- <PlanElement object_ID="0" id="37" operation="COUNT" option="STOPKEY" filter_predicates="ROWNUM=1">
- <PlanElements>
- <PlanElement object_ID="0" id="38" operation="NESTED LOOPS" cost="69" cardinality="49" bytes="1,617" cpu_cost="624,699" io_cost="69" time="1">
- <PlanElements>
- <PlanElement object_ID="11" id="39" operation="TABLE ACCESS" option="BY INDEX ROWID" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_LINES" object_type="TABLE" object_instance="12" cost="20" cardinality="49" bytes="882" cpu_cost="164,029" io_cost="20" time="1">
- <PlanElements>
<PlanElement object_ID="12" id="40" operation="INDEX" option="RANGE SCAN" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_LINES_N1" object_type="INDEX" search_columns="1" cost="3" cardinality="49" cpu_cost="30,964" io_cost="3" access_predicates=""B"."CODE_COMBINATION_ID"=:B1" time="1" />
</PlanElements>
</PlanElement>
- <PlanElement object_ID="13" id="41" operation="TABLE ACCESS" option="BY INDEX ROWID" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_HEADERS" object_type="TABLE" object_instance="11" cost="1" cardinality="1" bytes="15" cpu_cost="9,401" io_cost="1" filter_predicates=""A"."STATUS"='P'" time="1">
- <PlanElements>
<PlanElement object_ID="14" id="42" operation="INDEX" option="UNIQUE SCAN" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_HEADERS_U1" object_type="INDEX (UNIQUE)" search_columns="1" cost="0" cardinality="1" cpu_cost="1,900" io_cost="0" access_predicates=""A"."JE_HEADER_ID"="B"."JE_HEADER_ID"" time="1" />
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
- <PlanElement object_ID="0" id="43" operation="COUNT" option="STOPKEY" filter_predicates="ROWNUM=1">
- <PlanElements>
- <PlanElement object_ID="11" id="44" operation="TABLE ACCESS" option="BY INDEX ROWID" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_LINES" object_type="TABLE" object_instance="13" cost="5" cardinality="1" bytes="33" cpu_cost="39,068" io_cost="5" filter_predicates=""JE_HEADER_ID"=:B1 AND "LAST_UPDATE_DATE"=:B2" time="1">
- <PlanElements>
<PlanElement object_ID="12" id="45" operation="INDEX" option="RANGE SCAN" optimizer="ANALYZED" object_owner="GL" object_name="GL_JE_LINES_N1" object_type="INDEX" search_columns="2" cost="3" cardinality="4" cpu_cost="22,364" io_cost="3" access_predicates=""CODE_COMBINATION_ID"=:B1 AND "PERIOD_NAME"=:B2" time="1" />
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
- <PlanElement object_ID="0" id="46" operation="SORT" option="AGGREGATE" cardinality="1" bytes="25">
- <PlanElements>
- <PlanElement object_ID="9" id="47" operation="TABLE ACCESS" option="BY INDEX ROWID" optimizer="ANALYZED" object_owner="GL" object_name="GL_BALANCES" object_type="TABLE" object_instance="14" cost="6" cardinality="1" bytes="25" cpu_cost="45,399" io_cost="6" time="1">
- <PlanElements>
<PlanElement object_ID="10" id="48" operation="INDEX" option="RANGE SCAN" optimizer="ANALYZED" object_owner="GL" object_name="GL_BALANCES_N1" object_type="INDEX" search_columns="2" cost="3" cardinality="2" cpu_cost="21,964" io_cost="3" access_predicates=""CODE_COMBINATION_ID"=:B1 AND "PERIOD_NAME"=:B2" time="1" />
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
</PlanElements>
</PlanElement>
</ExplainPlan>Sorry this xml generated...
Regards
asp -
Need Help in tuning this query
select CO_PROFILE.CO_NO AS "UEN No.",
CO_PROFILE.CO_NAME AS "Entity Name",
DECODE(CO_PROFILE.CO_TYPE,'A1','PUBLIC COMPANY LIMITED BY SHARES',
'A3','COMPANY LIMITED BY GUARANTEE',
'A4','UNLIMITED PUBLIC COMPANY',
'B1','LIMITED PRIVATE COMPANY',
'B2','LIMITED EXEMPT PRIVATE COMPANY',
'B3','UNLIMITED PRIVATE COMPANY',
'B4','UNLIMITED EXEMPT PRIVATE COMPANY',
'F1','FOREIGN COMPANY REGISTERED IN SINGAPORE') AS "Entity Type",
M_STATUS.STATUS_DESC AS "Entity Status",
PAYMENT_DETAIL.SERVICE_CODE AS "Service Code",
PAYMENT_DETAIL.PAYMENT_CODE AS "Payment Code",
CO_TRANS_MAST.CO_TRANS_ID AS "Transaction Type",
M_PAYMENT_CODE.PAYMENT_DESC AS "Payment Description",
M_PAYMENT_CODE.REVENUE_CODE AS "Revenue Account",
CO_TRANS_MAST.NUM AS "Number Of Transactions",
PAY_NEW.UNIT_AMT AS "Revenue Amount1",
PAY_NEW.FILING_AMT AS "Revenue Amount2",
PAYMENT_DETAIL.UNIT_FEE AS "Unit Cost"
from CO_PROFILE,
M_STATUS,
PAYMENT_DETAIL,
CO_TRANS_MASTER,
(Select COUNT(CO_NO) AS "NUM",CO_TRANS_ID,CO_NO
from CO_TRANS_MASTER
group by CO_NO,CO_TRANS_ID
)CO_TRANS_MAST,
(Select Sum(UNIT_FEE) AS UNIT_AMT,
SUM(FILING_FEE) AS FILING_AMT,
TRANS_NO AS TRANS_NO
from
PAYMENT_DETAIL
group by
TRANS_NO)
PAY_NEW,
M_PAYMENT_CODE
where rownum=1
and CO_PROFILE.CO_STATUS=M_STATUS.STATUS_CODE
and M_STATUS.TRANS_ID='COMP'
and CO_TRANS_MASTER.CO_TRANS_ID=CO_TRANS_MAST.CO_TRANS_ID
and CO_TRANS_MASTER.CO_NO=CO_TRANS_MAST.CO_NO
and PAYMENT_DETAIL.TRANS_NO=CO_TRANS_MASTER.CO_TRANS_NO
and PAY_NEW.TRANS_NO=PAYMENT_DETAIL.TRANS_NO
and CO_TRANS_MAST.CO_NO= CO_PROFILE.CO_NO
and M_PAYMENT_CODE.PAYMENT_CODE=PAYMENT_DETAIL.PAYMENT_CODESomething seems wrong to me with the logical structure of the select.
1) You only get 1 row of output
but you
2) build sums for each trans_no
3) You join the table co_trans_master but at the same time you count over that one. Might be ok to do so, but it seems to be double the work.
Suggestion.
a) Build a select that joins the payment detail table. Then group this select and build the sums.
b) Add the count for the number of transactions to the select clause instead of and extra inline view in the from clause. Maybe as an analytical function if possible. -
Please can you help me in Tuning this query..?
Hi ,
Please can you help me in re-structuring this query? .Details are given below.
I have 2 tables as shown below and data is like this.
Position
COD IND
AAA N
BBB N
CCC N
DDD Y
Distance
orig dest
AAA BBB
BBB CCC
AAA CCC
I need to create the records like this
start end
DDD AAA
DDD BBB
DDD CCC
The query which i am using now for this is
select p.code AS start,
P1.CODE AS end
from position p, position p1
where
P.CODE != P1.CODE
AND (P.ind = 'Y' or P1.IND = 'Y')
AND not exists
(select 1
from distance d
where (d.orig = p.code or d.dest = p.code)
and (d.orig = p1.code or d.dest = p1.code))
table is having above a crore record. so its taking a lot of time.
Please someone please help in tuning this query?
Thanks and regards,
ShabirLooks like you want this
select a.strt, b.ends from
(select p.code strt from position p where p.ind='Y') a,
(select p.code ends from position p where p.ind='N') b
where not exists (select 1 from distance d where d.orig=a.strt or d.dest=a.strt);
DDD AAA
DDD BBB
DDD CCCYour query result is:
AAA DDD
BBB DDD
CCC DDD
DDD AAA
DDD BBB
DDD CCCYou should be more descriptive about what kind of result you want, so that people can get more interested in helping you. -
Hi,
Can anybody please help me in tuning this query?
update tablec c set c.col1 = (select b.col1 from tableb b where c.col2 = b.col2 ) where
c.col2 in (select distinct a.col1 from tablec a, tableb b where a.col2 = b.col2 and a.col1 != b.col1 )
When i use "alter session force parallel DML" before running this query it takes only seconds, but when i use parallel hint or run it without hint, its running for hours.
Thanks for your HelpHi itssan,
You could try EXISTS.
I think this is the same:
update tablec c
set c.col1 =
(select b.col1
from tableb b
where b.col2 = c.col2)
where exists (select null
from tablec a, tableb b
where a.col2 = b.col2
and a.col1 != b.col1
and a.col1 = c.col2);Regards
Peter -
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... -
i am using
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
With the Partitioning option
JServer Release 8.1.7.4.0 - Production
Please help to simplify this query. I also want to make this as a procedure.
select
RH.resort as RH_RESORT,
RH.rate_code as RH_RATE_CODE,
RD.rate_detail_id as RD_RATE_DETAIL_ID,
RD.rate1 as RD_RATE1,
RD.rate2 as RD_RATE2,
RD.rate3 as RD_RATE3,
RD.rate4 as RD_RATE4,
RD.rate5 as RD_RATE5,
RRC.room_category as RM_CAT,
initcap(RRMCAT.long_description) as RM_DESC,
RH.DAY1,
RH.DAY2,
RH.DAY3,
RH.DAY4,
RH.DAY5,
RH.DAY6,
RH.DAY7,
RH.WEEKEND1,
RH.WEEKEND2,
RH.WEEKEND3,
RH.WEEKEND4,
RH.WEEKEND5,
RH.WEEKEND6,
RH.WEEKEND7
from pms_rate_header RH,
pms_rate_detail RD,
pms_rate_room_cat RRC,
resort_room_category RRMCAT
where RH.inactive_date is NULL
and RH.RESORT='FABGOI'
and RH.RATE_CODE ='CRRRACK'
and ('15-Jan-2007' >= RH.BEGIN_DATE
and '16-Jan-2007' <= RH.END_DATE)
and RD.rate_header_id=RH.rate_header_id
and RD.inactive_date is NULL
and ('15-Jan-2007' >= RD.BEGIN_DATE
and '16-Jan-2007' <= RD.END_DATE)
and RRC.rate_detail_id=RD.rate_detail_id
and RRC.resort=RH.resort
and RRMCAT.resort=RH.resort
and RRMCAT.room_category=RRC.room_category
and RRC.inactive_date is NULL
and RRMCAT.inactive_date IS NULL
regards
lee1212where RH.inactive_date is NULL
and RH.RESORT='FABGOI'
and RH.RATE_CODE ='CRRRACK'
and ('15-Jan-2007' >= RH.BEGIN_DATE
and '16-Jan-2007' <= RH.END_DATE)
and RD.rate_header_id=RH.rate_header_id
and RD.inactive_date is NULL
and ('15-Jan-2007' >= RD.BEGIN_DATE
and '16-Jan-2007' <= RD.END_DATE)
and RRC.rate_detail_id=RD.rate_detail_id
and RRC.resort=RH.resort
and RRMCAT.resort=RH.resort
and RRMCAT.room_category=RRC.room_category
and RRC.inactive_date is NULL
and RRMCAT.inactive_date IS NULL
in the above part i am finding repeated joins and lot of 'and's
i want to know any line can be eliminated or the the query can be rewritten in a simple way without affecting it's accuracy?
regards
Lee1212 -
Hi,
Can you’ll please help me with this query.
Here is a little bit of background:
One title can have multiple items associated with it.
Table: TITLE has the master list of titles. TITLE_ID is the primary key.
Table: ITEM has the master list of all items. ITEM_ID is the primary. This table also has the TITLE_ID which stores title for this item.
Table: ITEM_STATUS has fields ITEM_ID and STATUS_ID. This field contains statuses for items. But not all items contained in the table ITEM are in this table.
I want to find TITLE_ID’s whose all items (all ITEM_ID in table ITEM having same value for TITLE_ID) have a particular status (for example STATUS_ID = 2) in table ITEM_STATUS.
Let’s say TITLE_ID = 1 has 5 items in table ITEM_ID and only 4 items out of it in table ITEM_STATUS with STATUS_ID = 2, then this TITLE_ID should not come. OR
Let’s say TITLE_ID = 1 has 5 items in table ITEM_ID and all these 5 items are in table ITEM_STATUS but only 1 has STATUS_ID = 2, then this TITLE_ID should also not come
In the above case only if all 5 items are contained in table ITEM_STATUS have STATUS_ID = 2 then this TITLE_ID should be reported by the query.
What should be the query like for this one, I am fairly new to SQL so plz guide me.
Thank you,
RajaI haven't tested the query below. Try it and let me know for any issues:
SELECT DISTINCT t.title_id
FROM title t,
item i,
item_status its
WHERE t.title_id = i.title_id
AND i.item_id = its.item_id
AND NOT EXISTS (
SELECT 1
FROM item_status its1
WHERE its1.item_id = i.item_id
AND status_id <> 'YOUR_ITEM_STATUS'
) -
Please help to modifiy this query for better performance
Please help to rewrite this query for better performance. This is taking long time to execute.
Table t_t_bil_bil_cycle_change contains 1200000 rows and table t_acctnumberTab countains 200000 rows.
I have created index on ACCOUNT_ID
Query is shown below
update rbabu.t_t_bil_bil_cycle_change a
set account_number =
( select distinct b.account_number
from rbabu.t_acctnumberTab b
where a.account_id = b.account_id
Table structure is shown below
SQL> DESC t_acctnumberTab;
Name Type Nullable Default Comments
ACCOUNT_ID NUMBER(10)
ACCOUNT_NUMBER VARCHAR2(24)
SQL> DESC t_t_bil_bil_cycle_change;
Name Type Nullable Default Comments
ACCOUNT_ID NUMBER(10)
ACCOUNT_NUMBER VARCHAR2(24) YIshan's solution is good. I would avoid updating rows which already have the right value - it's a waste of time.
You should have a UNIQUE or PRIMARY KEY constraint on t_acctnumberTab.account_id
merge rbabu.t_t_bil_bil_cycle_change a
using
( select distinct account_number, account_id
from rbabu.t_acctnumberTab
) t
on ( a.account_id = b.account_id
and decode(a.account_number, b.account_number, 0, 1) = 1
when matched then
update set a.account_number = b.account_number -
Could you please help me make this query less complicated
could you please help me make this query less complicated
select t1.R_OBJECT_ID
from dm_relation_sp a, ddt_resolution_sp t1
where a.parent_id = '0900000283560456' -----------ID
and a.child_id = t1.R_OBJECT_ID
union all
select t3.R_OBJECT_ID
from ddt_resolution_sp t3
where t3.R_OBJECT_ID in (select t2.child_id
from dm_relation_sp t2
where t2.parent_id in (select a.child_id
from asud_fsk.dm_relation_sp a, asud_fsk.ddt_resolution_sp t1
where a.parent_id = '0900000283560456' -----------ID
and a.child_id = t1.R_OBJECT_ID))
union all
select t4.R_OBJECT_ID
from ddt_resolution_sp t4
where t4.R_OBJECT_ID in(
select t3.child_id from dm_relation_sp t3
where t3.parent_id in (
select t2.child_id
from asud_fsk.dm_relation_sp t2
where t2.parent_id in (select a.child_id
from asud_fsk.dm_relation_sp a, asud_fsk.ddt_resolution_sp t1
where a.parent_id = '0900000283560456' -----------ID
and a.child_id = t1.R_OBJECT_ID))
and t3.relation_name = 'RESOLUTION_RELATION')
union all
select t5.R_OBJECT_ID
from ddt_resolution_sp t5
where t5.R_OBJECT_ID in
(select t4.child_id
from dm_relation_sp t4
where t4.parent_id in(
select t3.child_id from dm_relation_sp t3
where t3.parent_id in (
select t2.child_id
from asud_fsk.dm_relation_sp t2
where t2.parent_id in (select a.child_id
from asud_fsk.dm_relation_sp a, asud_fsk.ddt_resolution_sp t1
where a.parent_id = '0900000283560456' -----------ID
and a.child_id = t1.R_OBJECT_ID))
and t3.relation_name = 'RESOLUTION_RELATION')
and t4.relation_name = 'RESOLUTION_RELATION')
Edited by: user13025450 on 29.04.2010 16:23Hi,
Welcome to the forum! You'll find that there are many qualified people (such as Tubby) willing to help you. Will you do what you can to help them? In order to simplify the query you posted,someone will first have to understand what it does, what the tables that it uses are like, and what tools you have to work with (that is, what version of Oracle, and any other software you are using). To actually test their ideas, people will need versions of your tables.
Many people, if they spent enough time, might be able to figure out roughly what you are doing, make some tables themselves and test a solution. You can help with all of that. I assume you already know what the appliction is, and what this particular query is supposed to do: you don't have to figure out any of that, you just have to say it. You know what all your tables are, what the datatypes of all the columns are, and what kinds of data are in the tables: you don't have to guess at any of that.
Describe what you're doing. Think about it: how do we know that
SELECT NULL
FROM dual;doesn't do what you want?
Post CREATE TABLE and INSERT statements for a little sample data.
Post the results that this query is supposed to produce from those results. (Is it producing the right output now? Then it should be easy to post the correct results.)
Describe, as well as you can, how the present query is doing it.
Format your existing code, so it's easy to see what the different branches of the UNION are, and what the main clauses are in each one.
When posting formatted text (code or results) type these 6 characters
\(all small letters, inside curly brackets) before and after each formatted section, to keep this site from compressing the spaces.
Say what versions of Oracle (e.g. 10.2.0.3.0) and any other relevant software you are using.
I know it's a lot of work, but it really helps. You can do it as well (probably better) than anyone else, and if you're unwilling to do it, why should anyone else be willing? -
Can someone please suggest me in tuning this query?
Can someone please suggest me in tuning this query?
select pemail.email_oid,
pemail.parent_oid,
md.message_data_oid,
ea.email_account_oid,
ef.email_folder_oid,
md.channel,
ea.email_account_name,
md.from_address,
md.to_address,
eref.ref_id ticket_number,
( select count(email_oid) from esg.email where email_oid = pemail.email_oid and email.attachment_flag = 'Y' ) attachment_flag_a,
( select count(email_oid) from esg.email cemail
where cemail.parent_oid = pemail.email_oid and
( cemail.email_type is null or cemail.email_type != 'S') and
cemail.vec_status not in ('G', 'D', 'P') and
cemail.vec_status in ('N', 'O') and
cemail.attachment_flag = 'Y' ) attachment_flag_b,
md.received_date,
pemail.vec_status,
pemail.email_type,
md.subject,
md.content,
pemail.tracking_id,
pemail.assignee_oid,
( select count(email_oid) from email cemail
where cemail.parent_oid = pemail.email_oid and
(cemail.email_type is null or cemail.email_type != 'S' ) and
cemail.vec_status not in ('G','D', 'P') and
cemail.vec_status in ('N', 'O' ) ) child_email_cnt,
( select count(0) from email
where vec_status = 'N' and
email_type = 'O' and
email_oid = pemail.email_oid and
vec_status in ('N', 'O' )) parent_newemail_cnt,
( select count(0) from email
where vec_status = 'N' and
email_type = 'O' and
parent_oid = pemail.email_oid and
vec_status in ('N', 'O' )) child_newemail_cnt
From esg.email pemail,
esg.message_data md,
esg.email_account ea,
esg.email_folder ef,
(select email_oid, ref_id from email_ref
where email_ref_oid in (select min(email_ref_oid) from email_ref where ref_tid = -9000 and ref_sid = 'ESG' and confirmed_flag = 'Y' group by email_oid )) eref
where
md.message_data_oid = pemail.message_data_oid and
pemail.email_folder_oid = ef.email_folder_oid(+) and
ef.email_account_oid = ea.email_account_oid(+) and
pemail.vec_status not in ('G','D','P') and
pemail.vec_status in ('N', 'O') and
pemail.email_oid = eref.email_oid(+) and
lower(md.channel) in ('[email protected]', '[email protected]') and
pemail.email_oid in
( select parent.email_oid from message_data md,
email parent
where md.message_data_oid = parent.message_data_oid and
parent.parent_oid is null and
pemail.email_type = 'O' and
lower(md.to_address) in
( select lower(contact_info) from esg.user_profile up,
esg.person p,
esg.person_contact pc
where up.user_oid = 802239 and
up.person_oid = p.person_oid and
p.person_oid = pc.person_oid and
pc.contact_type_oid = 6 )
union all
select child.parent_oid from message_data md,
email child
where md.message_data_oid = child.message_data_oid and
parent_oid is not null and
child.vec_status not in ('G','D','P') and
child.vec_status in ('N', 'O') and
child.email_type = 'O' and
lower(md.to_address) in
( select lower(contact_info) from esg.user_profile up,
esg.person p,
esg.person_contact pc
where up.user_oid = 802239 and
up.person_oid = p.person_oid and
p.person_oid = pc.person_oid and
pc.contact_type_oid = 6 )
ORDER BY RECEIVED_DATE DESC;
1st run
Elapsed: 00:00:03.39
2nd run
Elapsed: 00:00:01.80
SQL> Select TABLE_NAME,LAST_ANALYZED, num_rows from user_tables where table_name in ('EMAIL','MESSAGE_DATA', 'EMAIL_ACCOUNT','EMAIL_FOLDER','EMAIL_REF','USER_PROFILE','PERSON','PERSON_CONTACT');
TABLE_NAME LAST_ANAL NUM_ROWS
USER_PROFILE 11-JUN-11 385808
PERSON_CONTACT 11-JUN-11 698624
PERSON 11-JUN-11 405364
MESSAGE_DATA 11-JUN-11 1069
EMAIL_REF 11-JUN-11 559
EMAIL_FOLDER 11-JUN-11 563
EMAIL_ACCOUNT 11-JUN-11 563
EMAIL 11-JUN-11 101652
8 rows selected.
row count from all tables
email - 102063
message_data - 1069
email_account - 563
email_folder - 563
email_ref - 559
user_profile - 386055
person - 404057
person_contact - 698696
Thanks,
Suman M.======================================
Execution Plan
Plan hash value: 110416976
| Id | Operation | Name | Rows | Bytes | Cost |
| 0 | SELECT STATEMENT | | 1 | 1361 | 17 |
| 1 | SORT AGGREGATE | | 1 | 8 | |
|* 2 | TABLE ACCESS BY INDEX ROWID | EMAIL | 1 | 8 | 1 |
|* 3 | INDEX UNIQUE SCAN | PK_EMAIL | 1 | | 1 |
| 4 | SORT AGGREGATE | | 1 | 8 | |
|* 5 | TABLE ACCESS BY INDEX ROWID | EMAIL | 1 | 8 | 1 |
|* 6 | INDEX RANGE SCAN | FK_EMAIL_PARENT | 3 | | 1 |
| 7 | SORT AGGREGATE | | 1 | 6 | |
|* 8 | TABLE ACCESS BY INDEX ROWID | EMAIL | 1 | 6 | 1 |
|* 9 | INDEX RANGE SCAN | FK_EMAIL_PARENT | 3 | | 1 |
| 10 | SORT AGGREGATE | | 1 | 10 | |
|* 11 | TABLE ACCESS BY INDEX ROWID | EMAIL | 1 | 10 | 1 |
|* 12 | INDEX UNIQUE SCAN | PK_EMAIL | 1 | | 1 |
| 13 | SORT AGGREGATE | | 1 | 6 | |
|* 14 | TABLE ACCESS BY INDEX ROWID | EMAIL | 1 | 6 | 1 |
|* 15 | INDEX RANGE SCAN | FK_EMAIL_PARENT | 3 | | 1 |
| 16 | SORT ORDER BY | | 1 | 1361 | 17 |
|* 17 | FILTER | | | | |
| 18 | NESTED LOOPS OUTER | | 1 | 1361 | 5 |
| 19 | NESTED LOOPS OUTER | | 1 | 1336 | 4 |
| 20 | NESTED LOOPS | | 1 | 1328 | 3 |
| 21 | NESTED LOOPS OUTER | | 1 | 53 | 2 |
| 22 | INLIST ITERATOR | | | | |
| 23 | TABLE ACCESS BY INDEX ROWID | EMAIL | 1 | 35 | 1 |
|* 24 | INDEX RANGE SCAN | IE_EMAIL | 55 | | 1 |
| 25 | VIEW PUSHED PREDICATE | | 1 | 18 | 1 |
| 26 | NESTED LOOPS | | 1 | 36 | 4 |
| 27 | VIEW | VW_NSO_1 | 11 | 143 | 3 |
| 28 | SORT GROUP BY | | 11 | 231 | 3 |
|* 29 | TABLE ACCESS BY INDEX ROWID| EMAIL_REF | 11 | 231 | 3 |
|* 30 | INDEX FULL SCAN | AK1_EMAIL_REF | 21 | | 3 |
|* 31 | TABLE ACCESS BY INDEX ROWID | EMAIL_REF | 1 | 23 | 1 |
|* 32 | INDEX UNIQUE SCAN | PK_EMAIL_REF | 1 | | 1 |
|* 33 | TABLE ACCESS BY INDEX ROWID | MESSAGE_DATA | 1 | 1275 | 1 |
|* 34 | INDEX UNIQUE SCAN | PK_MESSAGE_DATA | 1 | | 1 |
| 35 | TABLE ACCESS BY INDEX ROWID | EMAIL_FOLDER | 1 | 8 | 1 |
|* 36 | INDEX UNIQUE SCAN | PK_EMAIL_FOLDER | 1 | | 1 |
| 37 | TABLE ACCESS BY INDEX ROWID | EMAIL_ACCOUNT | 1 | 25 | 1 |
|* 38 | INDEX UNIQUE SCAN | PK_EMAIL_ACCOUNT | 1 | | 1 |
| 39 | UNION-ALL | | | | |
| 40 | NESTED LOOPS SEMI | | 1 | 116 | 5 |
| 41 | NESTED LOOPS | | 1 | 50 | 2 |
|* 42 | TABLE ACCESS BY INDEX ROWID | EMAIL | 1 | 14 | 1 |
|* 43 | INDEX UNIQUE SCAN | PK_EMAIL | 1 | | 1 |
| 44 | TABLE ACCESS BY INDEX ROWID | MESSAGE_DATA | 1069 | 38484 | 1 |
|* 45 | INDEX UNIQUE SCAN | PK_MESSAGE_DATA | 1 | | 1 |
|* 46 | VIEW | VW_NSO_3 | 1 | 66 | 3 |
|* 47 | FILTER | | | | |
| 48 | NESTED LOOPS | | 1 | 45 | 3 |
| 49 | NESTED LOOPS | | 1 | 15 | 2 |
| 50 | TABLE ACCESS BY INDEX ROWID | USER_PROFILE | 1 | 10 | 1 |
|* 51 | INDEX UNIQUE SCAN | PK_USER | 1 | | 1 |
|* 52 | INDEX UNIQUE SCAN | PK_PERSON | 405K| 1979K| 1 |
|* 53 | TABLE ACCESS BY INDEX ROWID | PERSON_CONTACT | 1 | 30 | 1 |
|* 54 | INDEX RANGE SCAN | FK_PERSON_CONTACT_PERSON | 2 | | 1 |
| 55 | NESTED LOOPS | | 1 | 114 | 5 |
| 56 | MERGE JOIN CARTESIAN | | 1 | 78 | 4 |
|* 57 | TABLE ACCESS BY INDEX ROWID | EMAIL | 1 | 12 | 1 |
|* 58 | INDEX RANGE SCAN | FK_EMAIL_PARENT | 1 | | 1 |
| 59 | BUFFER SORT | | 1 | 66 | 3 |
| 60 | VIEW | VW_NSO_2 | 1 | 66 | 3 |
| 61 | SORT UNIQUE | | 1 | 45 | |
| 62 | NESTED LOOPS | | 1 | 45 | 3 |
| 63 | NESTED LOOPS | | 1 | 15 | 2 |
| 64 | TABLE ACCESS BY INDEX ROWID| USER_PROFILE | 1 | 10 | 1 |
|* 65 | INDEX UNIQUE SCAN | PK_USER | 1 | | 1 |
|* 66 | INDEX UNIQUE SCAN | PK_PERSON | 405K| 1979K| 1 |
|* 67 | TABLE ACCESS BY INDEX ROWID | PERSON_CONTACT | 1 | 30 | 1 |
|* 68 | INDEX RANGE SCAN | FK_PERSON_CONTACT_PERSON | 2 | | 1 |
|* 69 | TABLE ACCESS BY INDEX ROWID | MESSAGE_DATA | 1 | 36 | 1 |
|* 70 | INDEX UNIQUE SCAN | PK_MESSAGE_DATA | 1 | | 1 |
Predicate Information (identified by operation id):
2 - filter("EMAIL"."ATTACHMENT_FLAG"='Y')
3 - access("EMAIL_OID"=:B1)
5 - filter("CEMAIL"."EMAIL_TYPE"<>'S' AND "CEMAIL"."VEC_STATUS"<>'G' AND
"CEMAIL"."VEC_STATUS"<>'D' AND "CEMAIL"."VEC_STATUS"<>'P' AND ("CEMAIL"."VEC_STATUS"='N'
OR "CEMAIL"."VEC_STATUS"='O') AND "CEMAIL"."ATTACHMENT_FLAG"='Y')
6 - access("CEMAIL"."PARENT_OID"=:B1)
8 - filter("CEMAIL"."EMAIL_TYPE"<>'S' AND "CEMAIL"."VEC_STATUS"<>'G' AND
"CEMAIL"."VEC_STATUS"<>'D' AND "CEMAIL"."VEC_STATUS"<>'P' AND ("CEMAIL"."VEC_STATUS"='N'
OR "CEMAIL"."VEC_STATUS"='O'))
9 - access("CEMAIL"."PARENT_OID"=:B1)
11 - filter("VEC_STATUS"='N' AND "EMAIL_TYPE"='O')
12 - access("EMAIL_OID"=:B1)
14 - filter("VEC_STATUS"='N' AND "EMAIL_TYPE"='O')
15 - access("PARENT_OID"=:B1)
17 - filter( EXISTS ( (SELECT "PARENT"."EMAIL_OID" FROM "EMAIL" "PARENT","MESSAGE_DATA"
"MD", (SELECT LOWER("CONTACT_INFO") "$nso_col_1" FROM "ESG"."PERSON_CONTACT"
"PC","ESG"."PERSON" "P","ESG"."USER_PROFILE" "UP" WHERE :B1='O' AND
"UP"."USER_OID"=802239 AND "UP"."PERSON_OID"="P"."PERSON_OID" AND
"P"."PERSON_OID"="PC"."PERSON_OID" AND "PC"."CONTACT_TYPE_OID"=6)
"VW_NSO_3" WHERE
"$nso_col_1"=LOWER("MD"."TO_ADDRESS") AND "MD"."MESSAGE_DATA_OID"="PARENT"."MESSAGE_DATA_O
ID" AND "PARENT"."EMAIL_OID"=:B2 AND "PARENT"."PARENT_OID" IS NULL
) UNION ALL (SELECT
"CHILD"."PARENT_OID" FROM "EMAIL" "CHILD","MESSAGE_DATA" "MD", (SELECT DISTINCT
LOWER("CONTACT_INFO") "$nso_col_1" FROM "ESG"."PERSON_CONTACT" "PC","ESG"."PERSON"
"P","ESG"."USER_PROFILE" "UP" WHERE "UP"."USER_OID"=802239 AND
"UP"."PERSON_OID"="P"."PERSON_OID" AND "P"."PERSON_OID"="PC"."PERSON_OID" AND
"PC"."CONTACT_TYPE_OID"=6) "VW_NSO_2" WHERE "MD"."MESSAGE_DATA_OID
"="CHILD"."MESSAGE_DATA_
OID" AND "$nso_col_1"=LOWER("MD"."TO_ADDRESS") AND "CHILD"."PARENT
_OID"=:B3 AND
"CHILD"."VEC_STATUS"<>'G' AND "CHILD"."VEC_STATUS"<>'D' AND "CHILD
"."VEC_STATUS"<>'P' AND
("CHILD"."VEC_STATUS"='N' OR "CHILD"."VEC_STATUS"='O') AND "CHILD"
."EMAIL_TYPE"='O' AND
"PARENT_OID" IS NOT NULL)))
24 - access("PEMAIL"."VEC_STATUS"='N' OR "PEMAIL"."VEC_STATUS"='O')
filter("PEMAIL"."VEC_STATUS"<>'G' AND "PEMAIL"."VEC_STATUS"<>'D' AND
"PEMAIL"."VEC_STATUS"<>'P')
29 - filter("CONFIRMED_FLAG"='Y')
30 - access("REF_SID"='ESG' AND "REF_TID"=(-9000))
filter("REF_TID"=(-9000) AND "REF_SID"='ESG')
31 - filter("EMAIL_OID"="PEMAIL"."EMAIL_OID")
32 - access("EMAIL_REF_OID"="$nso_col_1")
33 - filter(LOWER("MD"."CHANNEL")='[email protected]' OR
LOWER("MD"."CHANNEL")='[email protected]')
34 - access("MD"."MESSAGE_DATA_OID"="PEMAIL"."MESSAGE_DATA_OID")
36 - access("PEMAIL"."EMAIL_FOLDER_OID"="EF"."EMAIL_FOLDER_OID"(+))
38 - access("EF"."EMAIL_ACCOUNT_OID"="EA"."EMAIL_ACCOUNT_OID"(+))
42 - filter("PARENT"."PARENT_OID" IS NULL)
43 - access("PARENT"."EMAIL_OID"=:B1)
45 - access("MD"."MESSAGE_DATA_OID"="PARENT"."MESSAGE_DATA_OID")
46 - filter("$nso_col_1"=LOWER("MD"."TO_ADDRESS"))
47 - filter(:B1='O')
51 - access("UP"."USER_OID"=802239)
52 - access("UP"."PERSON_OID"="P"."PERSON_OID")
53 - filter("PC"."CONTACT_TYPE_OID"=6)
54 - access("P"."PERSON_OID"="PC"."PERSON_OID")
57 - filter("CHILD"."VEC_STATUS"<>'G' AND "CHILD"."VEC_STATUS"<>'D' AND
"CHILD"."VEC_STATUS"<>'P' AND ("CHILD"."VEC_STATUS"='N' OR "CHILD"
."VEC_STATUS"='O') AND
"CHILD"."EMAIL_TYPE"='O')
58 - access("CHILD"."PARENT_OID"=:B1)
filter("PARENT_OID" IS NOT NULL)
65 - access("UP"."USER_OID"=802239)
66 - access("UP"."PERSON_OID"="P"."PERSON_OID")
67 - filter("PC"."CONTACT_TYPE_OID"=6)
68 - access("P"."PERSON_OID"="PC"."PERSON_OID")
69 - filter("$nso_col_1"=LOWER("MD"."TO_ADDRESS"))
70 - access("MD"."MESSAGE_DATA_OID"="CHILD"."MESSAGE_DATA_OID")
Note
- cpu costing is off (consider enabling it)
Statistics
3103 recursive calls
0 db block gets
599654 consistent gets
2915 physical reads
0 redo size
1955 bytes sent via SQL*Net to client
3895 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
331 sorts (memory)
0 sorts (disk)
0 rows processed
===================================== -
Help in fine tuning this query
My query id this,
select a.event_id,a.document_id
from sample_transaction a
where exists (select 1 from sample_transaction b where b.event_id <> a.event_id and b.document_id = a.document_id );
The execution plan is like this,
SELECT STATEMENT Cost = 5596
FILTER
TABLE ACCESS FULL SAMPLE_TRANSACTION
TABLE ACCESS BY INDEX ROWID SAMPLE_TRANSACTION
INDEX RANGE SCAN I_SAMPLE_TRANSACTION_FK_EVT
There are 6 million records in the table.
How can i fine tune this query so that i get the results
Example is
my table has
EVENT_ID DOCUMENT_ID
100 200
100 200
101 201
102 201
103 203
104 203
105 204
105 204
106 106
My result should be
EVENT_ID DOCUMENT_ID
101 201
102 201
103 203
104 203
nullBased on your select statement, you will bring back every row in sample_transaction where the document is referenced by more than one event. Looking at it another way, the only rows skipped are those where the document is only used by one event.
The full table scan is not necessarilly a problem since Oracle has to check all rows. You may improve performance if you add an index on document_id. That will allow Oracle to do a better query on the EXISTS clause. Remember to rebuild your statistics after adding the index.
Maybe you are looking for
-
10.4.7 Runs Slow, Spinning Beach Ball, "kass" takes over system
To the helpful frequenters of this forum: Since installing Tiger and updating to 10.4.7 recently, I have experienced some major system slow downs on my computer. I am running a Titanium Powerbook G4 with 512MB RAM and 12GB free (from a 60GB hard driv
-
i installed developer 10g on standalone machine , but when running a form i have the error message : frm:10142 the http listener is not running on desktop at port 8889, please start the listener or check your form runtime preferences.meamwhile the re
-
Photoshop Elements 4 & 5 and Windows Vista
I'm thinking about getting a new laptop. All of them come with VISTA at this time. Will I be able to run PSE 4 on a VISTA laptop? Will PSE 5 run on VISTA? Lloyd Erickson
-
Burn tool effect still happens when painting with low opacity/flow
i posted this before, and it wasnt resolved. i figured i'd wait for an update for it to be fixed. i'm using a samsung galaxy note 10.1, and i just downloaded the 14.2 andrioid update, and the problem still occurs. please fix this issue. photoshop tou
-
hello alll. I AM USING OMWC TCODE FOR CREATING NEW VALUATION TYPE AND ASSIGNED THAT TO ACCOUNT CATEGORY REFERENCE.BUT WHEN I SAVE THE DATA IN DEVELOPMENT SERVER,THERE IS NO REQUEST GENERATED.HOW I TRANSPORT THIS REQUEST TO TESTING SERVER. SPRO-->MM>V