JOIN上甲骨文 - OUTER與XMLTABLE
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
"CORE 11.2.0.3.0 Production"
TNS for IBM/AIX RISC System/6000: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
我創建一個表上的視圖與XMLTYPE
作爲列;視圖是工作,但它需要大量的返回結果:
CREATE OR REPLACE FORCE VIEW "VW_FATT_TRASP_CONN_NEW" ("TCODICEFLUSSO", "TCODICETIPOFATTURA", "TIPOLOGIA_FATTURA", "TNUMEROSEQUENZA", "TDATAEMISSIONEFATTURA", "TDATASCADENZAFATTURA", "TRAGIONESOCIALEMITTENTE", "TPARTITAIVAMITTENTE", "TINDIRIZZOMITTENTE", "TCAPMITTENTE", "TLOCALITAMITTENTE", "TPROVINCIAMITTENTE", "TNAZIONEMITTENTE", "TIBANMITTENTE", "TRAGIONESOCIALEDESTINATARIO", "TPARTITAIVADESTINATARIO", "TINDIRIZZODESTINATARIO", "TCAPDESTINATARIO", "TLOCALITADESTINATARIO", "TPROVINCIADESTINATARIO", "TNAZIONEDESTINATARIO", "TCONTRATTODISPACCIAMENTO", "FNUMEROFATTURA", "FPERIODOCOMPETENZADA", "FPERIODOCOMPETENZAA", "FCODICEVOCEFATTURATA", "FTOTALEIMPONIBILEFATTURA", "FTOTALEIVAFATTURA", "FTOTALEFATTURA", "FIMPORTOBOLLO", "NOTEFATTURA", "RTIPOLOGIACONTRATTUALE", "RCODICEMOTIVAZIONE", "RCORRINDEPREST", "RNUMEROPOD", "RTOTTARDISTQTFISSA", "RTOTTARDISTQTPOTENZA", "RTOTTARDISTENATTIVA", "RTOTTARDISTENREATTIVA", "RTOTONGENULTCOMQTFISSA", "RTOTONGENULTCOMQTPOTENZA", "RTOTONGENULTCOMENATTIVA", "RTOTALEQUOTAFISSA", "RTOTALEQUOTAPOTENZA", "RTOTALEENERGIAATTIVA", "RTOTALEENERGIAREATTIVA", "RTOTALEGENERALE", "RALIQUOTAIVA", "RIMPONIBILEIVA", "RIMPORTOIVA", "DCODICEPOD", "DDTTENSIONE", "DDTPOTENZAIMPEGNATA", "DDTPOTENZADISPONIBILE", "DDCTIPOLOGIACONTRATTUALE", "DDCTARIFFADISTRIBUZIONE", "DDCPRODUTTORIPURIPERIZIA", "DDCFORNITURAENERGIVORA", "DIDCALCOLO", "DDATICLIENTE", "DCOMPONENTE", "DCTSANNO", "DCTSPROGRESSIVO", "DPERIODOCOMPETENZADA", "DPERIODOCOMPETENZAA", "DSCAGLIONE", "DQUANTITA", "DCORRISPETTIVOUNITARIO", "DCODICEIVA", "DIMPORTO", "NOME_FILE") AS
SELECT
TB_TESTATA_FLUSSO.TCodiceFlusso,
TB_TESTATA_FLUSSO.TCodiceTipoFattura,
CASE
WHEN TB_TESTATA_FLUSSO.TCodiceTipoFattura IN ('C', 'R') THEN 'TRASPORTO'
WHEN TB_TESTATA_FLUSSO.TCodiceTipoFattura = 'U' THEN 'CONNESSIONE'
ELSE 'NON DEFINITO'
END AS TIPOLOGIA_FATTURA,
TB_TESTATA_FLUSSO.TNumeroSequenza,
TB_TESTATA_FLUSSO.TDataEmissioneFattura,
TB_TESTATA_FLUSSO.TDataScadenzaFattura,
TB_TESTATA_FLUSSO.TRagioneSocialeMittente,
TB_TESTATA_FLUSSO.TPartitaIVAMittente,
TB_TESTATA_FLUSSO.TIndirizzoMittente,
TB_TESTATA_FLUSSO.TCAPMittente,
TB_TESTATA_FLUSSO.TLocalitaMittente,
TB_TESTATA_FLUSSO.TProvinciaMittente,
TB_TESTATA_FLUSSO.TNazioneMittente,
TB_TESTATA_FLUSSO.TIBANMittente,
TB_TESTATA_FLUSSO.TRagioneSocialeDestinatario,
TB_TESTATA_FLUSSO.TPartitaIVADestinatario,
TB_TESTATA_FLUSSO.TIndirizzoDestinatario,
TB_TESTATA_FLUSSO.TCAPDestinatario,
TB_TESTATA_FLUSSO.TLocalitaDestinatario,
TB_TESTATA_FLUSSO.TProvinciaDestinatario,
TB_TESTATA_FLUSSO.TNazioneDestinatario,
TB_TESTATA_FLUSSO.TContrattoDispacciamento,
--TB_TCodiceFlusso.TCodiceFlusso,
TB_FATTURE.FNumeroFattura,
TB_TESTATA_FATTURA.FPeriodoCompetenzaDa,
TB_TESTATA_FATTURA.FPeriodoCompetenzaA,
TB_TESTATA_FATTURA.FCodiceVoceFatturata,
TO_NUMBER(REPLACE(TB_TESTATA_FATTURA.FTotaleImponibileFattura,'.',',')) AS FTotaleImponibileFattura,
TO_NUMBER(REPLACE(TB_TESTATA_FATTURA.FTotaleIVAFattura,'.',',')) AS FTotaleIVAFattura,
TO_NUMBER(REPLACE(TB_TESTATA_FATTURA.FTotaleFattura,'.',',')) AS FTotaleFattura,
TO_NUMBER(REPLACE(TB_TESTATA_FATTURA.FImportoBollo,'.',',')) AS FImportoBollo,
TB_RIEPILOGO_FATTURA.NoteFattura,
TB_RIEPILOGO_VALORI.RTipologiaContrattuale,
TB_RIEPILOGO_VALORI.RCodiceMotivazione,
TB_RIEPILOGO_VALORI.RCorrIndePrest,
TB_RIEPILOGO_VALORI.RNumeroPod,
TO_NUMBER(REPLACE(TB_RIEPILOGO_VALORI.RTotTarDistQtFissa,'.',',')) AS RTotTarDistQtFissa,
TO_NUMBER(REPLACE(TB_RIEPILOGO_VALORI.RTotTarDistQtPotenza,'.',',')) AS RTotTarDistQtPotenza,
TO_NUMBER(REPLACE(TB_RIEPILOGO_VALORI.RTotTarDistEnAttiva,'.',',')) AS RTotTarDistEnAttiva,
TO_NUMBER(REPLACE(TB_RIEPILOGO_VALORI.RTotTarDistEnReattiva,'.',',')) AS RTotTarDistEnReattiva,
TO_NUMBER(REPLACE(TB_RIEPILOGO_VALORI.RTotOnGenUltComQtFissa,'.',',')) AS RTotOnGenUltComQtFissa,
TO_NUMBER(REPLACE(TB_RIEPILOGO_VALORI.RTotOnGenUltComQtPotenza,'.',',')) AS RTotOnGenUltComQtPotenza,
TO_NUMBER(REPLACE(TB_RIEPILOGO_VALORI.RTotOnGenUltComEnAttiva,'.',',')) AS RTotOnGenUltComEnAttiva,
TO_NUMBER(REPLACE(TB_RIEPILOGO_VALORI.RTotaleQuotaFissa,'.',',')) AS RTotaleQuotaFissa,
TO_NUMBER(REPLACE(TB_RIEPILOGO_VALORI.RTotaleQuotaPotenza,'.',',')) AS RTotaleQuotaPotenza,
TO_NUMBER(REPLACE(TB_RIEPILOGO_VALORI.RTotaleEnergiaAttiva,'.',',')) AS RTotaleEnergiaAttiva,
TO_NUMBER(REPLACE(TB_RIEPILOGO_VALORI.RTotaleEnergiaReattiva,'.',',')) AS RTotaleEnergiaReattiva,
TO_NUMBER(REPLACE(TB_RIEPILOGO_VALORI.RTotaleGenerale,'.',',')) AS RTotaleGenerale,
TB_RIEPILOGO_IVA.TB_RIEPILOGO_IVA.RAliquotaIVA,
TO_NUMBER(REPLACE(TB_RIEPILOGO_IVA.RImponibileIVA,'.',',')) AS RImponibileIVA,
TO_NUMBER(REPLACE(TB_RIEPILOGO_IVA.RImportoIVA,'.',',')) AS RImportoIVA,
TB_DETTAGLIO_POD.DCodicePod,
TB_DATI_TECNICI_COMM.DDTTensione,
TO_NUMBER(REPLACE(TB_DATI_TECNICI_COMM.DDTPotenzaImpegnata,'.',',')) AS DDTPotenzaImpegnata,
TO_NUMBER(REPLACE(TB_DATI_TECNICI_COMM.DDTPotenzaDisponibile,'.',',')) AS DDTPotenzaDisponibile,
TB_DATI_TECNICI_COMM.DDCTipologiaContrattuale,
TB_DATI_TECNICI_COMM.DDCTariffaDistribuzione,
TB_DATI_TECNICI_COMM.DDCProduttoriPuriPerizia,
TB_DATI_TECNICI_COMM.DDCFornituraEnergivora,
TB_CORRISPETTIVI.DIDCalcolo,
TB_CORRISPETTIVI.DDatiCliente,
TB_CORRISPETTIVI.DComponente,
TB_CORRISPETTIVI.DCTSAnno,
TB_CORRISPETTIVI.DCTSProgressivo,
TB_CORRISPETTIVI.DPeriodoCompetenzaDa,
TB_CORRISPETTIVI.DPeriodoCompetenzaA,
TB_CORRISPETTIVI.DScaglione,
TO_NUMBER(REPLACE(TB_CORRISPETTIVI.DQuantita,'.',',')) AS DQuantita,
TO_NUMBER(REPLACE(TB_CORRISPETTIVI.DCorrispettivoUnitario,'.',',')) AS DCorrispettivoUnitario,
TB_CORRISPETTIVI.DCodiceIVA,
TO_NUMBER(REPLACE(TB_CORRISPETTIVI.DImporto,'.',',')) AS DImporto,
MS525.NOME_FILE
FROM MS525_FILE_XML MS525 LEFT JOIN
XMLTABLE('FlussoFattureTrasporto'
PASSING MS525.XML_DATI
COLUMNS
TCodiceFlusso VARCHAR2(10) PATH 'TestataFlusso/TCodiceFlusso',
TCodiceTipoFattura VARCHAR2(10) PATH 'TestataFlusso/TCodiceTipoFattura',
TNumeroSequenza VARCHAR2(10) PATH 'TestataFlusso/TNumeroSequenza',
TDataEmissioneFattura VARCHAR2(10) PATH 'TestataFlusso/TDataEmissioneFattura',
TDataScadenzaFattura VARCHAR2(10) PATH 'TestataFlusso/TDataScadenzaFattura',
TRagioneSocialeMittente VARCHAR2(100) PATH 'TestataFlusso/TRagioneSocialeMittente',
TPartitaIVAMittente VARCHAR2(50) PATH 'TestataFlusso/TPartitaIVAMittente',
TIndirizzoMittente VARCHAR2(100) PATH 'TestataFlusso/TIndirizzoMittente',
TCAPMittente VARCHAR2(10) PATH 'TestataFlusso/TCAPMittente',
TLocalitaMittente VARCHAR2(100) PATH 'TestataFlusso/TLocalitaMittente',
TProvinciaMittente VARCHAR2(10) PATH 'TestataFlusso/TProvinciaMittente',
TNazioneMittente VARCHAR2(20) PATH 'TestataFlusso/TNazioneMittente',
TIBANMittente VARCHAR2(50) PATH 'TestataFlusso/TIBANMittente',
TRagioneSocialeDestinatario VARCHAR2(100) PATH 'TestataFlusso/TRagioneSocialeDestinatario',
TPartitaIVADestinatario VARCHAR2(50) PATH 'TestataFlusso/TPartitaIVADestinatario',
TIndirizzoDestinatario VARCHAR2(100) PATH 'TestataFlusso/TIndirizzoDestinatario',
TCAPDestinatario VARCHAR2(10) PATH 'TestataFlusso/TCAPDestinatario',
TLocalitaDestinatario VARCHAR2(100) PATH 'TestataFlusso/TLocalitaDestinatario',
TProvinciaDestinatario VARCHAR2(10) PATH 'TestataFlusso/TProvinciaDestinatario',
TNazioneDestinatario VARCHAR2(20) PATH 'TestataFlusso/TNazioneDestinatario',
TContrattoDispacciamento VARCHAR2(10) PATH 'TestataFlusso/TContrattoDispacciamento',
NODO_FLUSSO_FATT XMLTYPE path 'TestataFlusso',
NODO_FATTURE XMLTYPE path 'Fatture') TB_TESTATA_FLUSSO ON 1=1 LEFT JOIN
XMLTABLE('/TestataFlusso'
PASSING TB_TESTATA_FLUSSO.NODO_FLUSSO_FATT
COLUMNS
TCodiceFlusso VARCHAR2(20) PATH 'TCodiceFlusso'
) TB_TCodiceFlusso ON 1=1 LEFT JOIN
XMLTABLE('/Fatture'
PASSING TB_TESTATA_FLUSSO.NODO_FATTURE
COLUMNS
FNumeroFattura VARCHAR2(20) PATH 'FNumeroFattura',
NODO_TESTATA_FATT XMLTYPE PATH 'TestataFattura',
NODO_RIEPILOGO_FATT XMLTYPE PATH 'RiepilogoFattura',
NODO_DETTAGLIO_POD XMLTYPE PATH 'DettaglioPOD'
) TB_FATTURE ON 1=1 LEFT JOIN
XMLTABLE('/TestataFattura'
PASSING TB_FATTURE.NODO_TESTATA_FATT
COLUMNS
FPeriodoCompetenzaDa VARCHAR2(20) PATH 'FPeriodoCompetenzaDa',
FPeriodoCompetenzaA VARCHAR2(20) PATH 'FPeriodoCompetenzaA',
FCodiceVoceFatturata VARCHAR2(20) PATH 'FCodiceVoceFatturata',
FTotaleImponibileFattura VARCHAR2(20) PATH 'FTotaleImponibileFattura',
FTotaleIVAFattura VARCHAR2(20) PATH 'FTotaleIVAFattura',
FTotaleFattura VARCHAR2(20) PATH 'FTotaleFattura',
FImportoBollo VARCHAR2(20) PATH 'FImportoBollo'
) TB_TESTATA_FATTURA ON 1=1 LEFT JOIN
/*
--Modificata con loop perche' il tag <NoteFattura> puo' comparire piu' di una volta!!!
XMLTABLE('/RiepilogoFattura'
PASSING TB_FATTURE.NODO_RIEPILOGO_FATT
COLUMNS
NoteFattura VARCHAR2(1000) PATH 'NoteFattura',
NODO_RIEPILOGO_VALORI XMLTYPE PATH 'RiepilogoValori',
NODO_RIEPILOGO_IVA XMLTYPE PATH 'RiepilogoIVA'
) TB_RIEPILOGO_FATTURA ON 1=1 LEFT JOIN
*/
XMLTABLE('for $i in $XTYPE_NODO_RIEPILOGO_FATT/RiepilogoFattura
return element result {
for $j at $pos in $i
return element row {
$i/NoteFattura[$pos],
$i/RiepilogoValori,
$i/RiepilogoIVA
}
}/row
'
PASSING TB_FATTURE.NODO_RIEPILOGO_FATT as XTYPE_NODO_RIEPILOGO_FATT
COLUMNS
NoteFattura VARCHAR2(1000) PATH 'NoteFattura',
NODO_RIEPILOGO_VALORI XMLTYPE PATH 'RiepilogoValori',
NODO_RIEPILOGO_IVA XMLTYPE PATH 'RiepilogoIVA'
) TB_RIEPILOGO_FATTURA ON 1=1 LEFT JOIN
XMLTABLE('/RiepilogoValori'
PASSING TB_RIEPILOGO_FATTURA.NODO_RIEPILOGO_VALORI
COLUMNS
RTipologiaContrattuale VARCHAR2(20) PATH 'RTipologiaContrattuale',
RCodiceMotivazione VARCHAR2(20) PATH 'RCodiceMotivazione',
RCorrIndePrest VARCHAR2(20) PATH 'RCorrIndePrest',
RNumeroPod VARCHAR2(20) PATH 'RNumeroPod',
RTotTarDistQtFissa VARCHAR2(20) PATH 'RTotTarDistQtFissa',
RTotTarDistQtPotenza VARCHAR2(20) PATH 'RTotTarDistQtPotenza',
RTotTarDistEnAttiva VARCHAR2(20) PATH 'RTotTarDistEnAttiva',
RTotTarDistEnReattiva VARCHAR2(20) PATH 'RTotTarDistEnReattiva',
RTotOnGenUltComQtFissa VARCHAR2(20) PATH 'RTotOnGenUltComQtFissa',
RTotOnGenUltComQtPotenza VARCHAR2(20) PATH 'RTotOnGenUltComQtPotenza',
RTotOnGenUltComEnAttiva VARCHAR2(20) PATH 'RTotOnGenUltComEnAttiva',
RTotaleQuotaFissa VARCHAR2(20) PATH 'RTotaleQuotaFissa',
RTotaleQuotaPotenza VARCHAR2(20) PATH 'RTotaleQuotaPotenza',
RTotaleEnergiaAttiva VARCHAR2(20) PATH 'RTotaleEnergiaAttiva',
RTotaleEnergiaReattiva VARCHAR2(20) PATH 'RTotaleEnergiaReattiva',
RTotaleGenerale VARCHAR2(20) PATH 'RTotaleGenerale'
) TB_RIEPILOGO_VALORI ON 1=1 LEFT JOIN
XMLTABLE('/RiepilogoIVA'
PASSING TB_RIEPILOGO_FATTURA.NODO_RIEPILOGO_IVA
COLUMNS
RAliquotaIVA VARCHAR2(5) PATH 'RAliquotaIVA',
RImponibileIVA VARCHAR2(20) PATH 'RImponibileIVA',
RImportoIVA VARCHAR2(20) PATH 'RImportoIVA'
) TB_RIEPILOGO_IVA ON 1=1 LEFT JOIN
XMLTABLE('/DettaglioPOD'
PASSING TB_FATTURE.NODO_DETTAGLIO_POD
COLUMNS
DCodicePod VARCHAR2(1000) PATH 'DCodicePod',
DATI_TECNICI_COMMERCIALI XMLTYPE PATH 'DatiTecniciCommerciali',
CORRISPETTIVI XMLTYPE PATH 'Corrispettivi'
) TB_DETTAGLIO_POD ON 1=1 LEFT JOIN
XMLTABLE('/DatiTecniciCommerciali'
PASSING TB_DETTAGLIO_POD.DATI_TECNICI_COMMERCIALI
COLUMNS
DDTTensione VARCHAR2(1000) PATH 'DDTTensione',
DDTPotenzaImpegnata VARCHAR2(20) PATH 'DDTPotenzaImpegnata',
DDTPotenzaDisponibile VARCHAR2(20) PATH 'DDTPotenzaDisponibile',
DDCTipologiaContrattuale VARCHAR2(20) PATH 'DDCTipologiaContrattuale',
DDCTariffaDistribuzione VARCHAR2(10) PATH 'DDCTariffaDistribuzione',
DDCProduttoriPuriPerizia VARCHAR2(10) PATH 'DDCProduttoriPuriPerizia',
DDCFornituraEnergivora VARCHAR2(10) PATH 'DDCFornituraEnergivora'
) TB_DATI_TECNICI_COMM ON 1=1 LEFT JOIN
XMLTABLE('/Corrispettivi'
PASSING TB_DETTAGLIO_POD.CORRISPETTIVI
COLUMNS
DIDCalcolo VARCHAR2(20) PATH 'DIDCalcolo',
DDatiCliente VARCHAR2(20) PATH 'DDatiCliente',
DComponente VARCHAR2(20) PATH 'DComponente',
DCTSAnno VARCHAR2(20) PATH 'DCTSAnno',
DCTSProgressivo VARCHAR2(20) PATH 'DCTSProgressivo',
DPeriodoCompetenzaDa VARCHAR2(10) PATH 'DPeriodoCompetenzaDa',
DPeriodoCompetenzaA VARCHAR2(10) PATH 'DPeriodoCompetenzaA',
DScaglione VARCHAR2(10) PATH 'DScaglione',
DQuantita VARCHAR2(10) PATH 'DQuantita',
DCorrispettivoUnitario VARCHAR2(10) PATH 'DCorrispettivoUnitario',
DCodiceIVA VARCHAR2(10) PATH 'DCodiceIVA',
DImporto VARCHAR2(20) PATH 'DImporto'
) TB_CORRISPETTIVI ON 1=1;
在一個10 MB的文件,該viwe需要兩個多小時,返回記錄集。 這裏MS525_FILE_XML表的DDL:
CREATE TABLE MS525_FILE_XML
(NOME_FILE VARCHAR2(200 BYTE),
XML_DATI XMLTYPE,
ESITO_OPERAZIONE NUMBER(*,0) DEFAULT 0,
DATA_ORA_INSERT TIMESTAMP (6) DEFAULT SYSTIMESTAMP,
FLAG_IN_ESECUZIONE NUMBER(*,0) DEFAULT 0,
CONSTRAINT PK_MS525 PRIMARY KEY (NOME_FILE, DATA_ORA_INSERT)
);
下面是執行計劃:
Plan hash value: 2500968592
----------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 18E| 15E| 18E (0)|999:59:59 |
| 1 | SORT AGGREGATE | | 1 | 4 | | |
|* 2 | COLLECTION ITERATOR PICKLER FETCH | XMLSEQUENCEFROMXMLTYPE | 82 | 328 | 30 (4)| 00:00:01 |
| 3 | SORT AGGREGATE | | 1 | 2 | | |
| 4 | COLLECTION ITERATOR PICKLER FETCH | XMLSEQUENCEFROMXMLTYPE | 8168 | 16336 | 29 (0)| 00:00:01 |
| 5 | NESTED LOOPS OUTER | | 18E| 15E| 18E (0)|999:59:59 |
| 6 | NESTED LOOPS OUTER | | 18E| 15E| 18E (0)|999:59:59 |
| 7 | NESTED LOOPS OUTER | | 2425P| 15E| 8681T (1)|999:59:59 |
| 8 | NESTED LOOPS OUTER | | 296T| 961P| 1062G (1)|999:59:59 |
| 9 | NESTED LOOPS OUTER | | 36G| 119T| 130M (1)|433:45:23 |
| 10 | NESTED LOOPS OUTER | | 4451K| 14G| 16021 (1)| 00:03:13 |
| 11 | NESTED LOOPS OUTER | | 545 | 1520K| 90 (2)| 00:00:02 |
| 12 | NESTED LOOPS OUTER | | 1 | 2773 | 60 (0)| 00:00:01 |
| 13 | NESTED LOOPS OUTER | | 1 | 2659 | 31 (0)| 00:00:01 |
| 14 | NESTED LOOPS OUTER | | 1 | 2659 | 2 (0)| 00:00:01 |
| 15 | TABLE ACCESS BY INDEX ROWID | MS525_FILE_XML | 1 | 2104 | 0 (0)| 00:00:01 |
|* 16 | INDEX RANGE SCAN | PK_MS525 | 1 | | 0 (0)| 00:00:01 |
| 17 | VIEW | | 1 | 555 | 2 (0)| 00:00:01 |
|* 18 | FILTER | | | | | |
| 19 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
| 20 | VIEW | | 8168 | | 29 (0)| 00:00:01 |
| 21 | COLLECTION ITERATOR PICKLER FETCH| XMLSEQUENCEFROMXMLTYPE | 8168 | 16336 | 29 (0)| 00:00:01 |
| 22 | VIEW | | 8168 | 909K| 29 (0)| 00:00:01 |
| 23 | COLLECTION ITERATOR PICKLER FETCH | XMLSEQUENCEFROMXMLTYPE | 8168 | 16336 | 29 (0)| 00:00:01 |
| 24 | VIEW | | 8168 | 670K| 29 (0)| 00:00:01 |
| 25 | COLLECTION ITERATOR PICKLER FETCH | XMLSEQUENCEFROMXMLTYPE | 8168 | 16336 | 29 (0)| 00:00:01 |
| 26 | VIEW | | 8168 | 4546K| 29 (0)| 00:00:01 |
| 27 | COLLECTION ITERATOR PICKLER FETCH | XMLSEQUENCEFROMXMLTYPE | 8168 | 16336 | 29 (0)| 00:00:01 |
| 28 | VIEW | | 8168 | 1531K| 29 (0)| 00:00:01 |
| 29 | COLLECTION ITERATOR PICKLER FETCH | XMLSEQUENCEFROMXMLTYPE | 8168 | 16336 | 29 (0)| 00:00:01 |
| 30 | VIEW | | 8168 | 223K| 29 (0)| 00:00:01 |
| 31 | COLLECTION ITERATOR PICKLER FETCH | XMLSEQUENCEFROMXMLTYPE | 8168 | 16336 | 29 (0)| 00:00:01 |
| 32 | VIEW | | 8168 | 4546K| 29 (0)| 00:00:01 |
| 33 | COLLECTION ITERATOR PICKLER FETCH | XMLSEQUENCEFROMXMLTYPE | 8168 | 16336 | 29 (0)| 00:00:01 |
| 34 | VIEW | | 8168 | 4458K| 29 (0)| 00:00:01 |
| 35 | COLLECTION ITERATOR PICKLER FETCH | XMLSEQUENCEFROMXMLTYPE | 8168 | 16336 | 29 (0)| 00:00:01 |
| 36 | VIEW | | 8168 | 909K| 29 (0)| 00:00:01 |
| 37 | COLLECTION ITERATOR PICKLER FETCH | XMLSEQUENCEFROMXMLTYPE | 8168 | 16336 | 29 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter(SYS_XQFNPREDTRUTH(:B1,VALUE(KOKBF$) /* KOKBI$ */)=1)
16 - access("MS525"."NOME_FILE"='05779711000_02968430237_DP0114_FTR_C_20170803_001_E.xml')
18 - filter(EXISTSNODE(SYS_MAKEXML(0,"MS525"."SYS_NC00003$"),'/FlussoFattureTrasporto')=1)
爲什麼要留下外連接;使用交叉連接有什麼區別? –
在公共網站上發佈這樣一個可怕的查詢需要一些神經,並期望陌生人花時間去理解它。我們必須向你的樂觀致敬。 – APC
@APC:謝謝,您的評論非常有幫助。 – Yellow75