2016-03-29 20 views
0

Ich Berechnung der Ressourcenkosten:Wie wird diese Abfrage abgestimmt?

 SELECT NVL(sum(WT.TRANSACTION_QUANTITY* WTA.RATE_OR_AMOUNT),0) 
     -- INTO l_resource_cost 
     FROM APPS.WIP_TRANSACTION_ACCOUNTS WTA, APPS.WIP_TRANSACTIONS WT 
     WHERE WTA.TRANSACTION_ID = WT.TRANSACTION_ID 
     AND WTA.ORGANIZATION_ID = WT.ORGANIZATION_ID 
     AND WTA.ACCOUNTING_LINE_TYPE =7 
     AND WTA.WIP_ENTITY_ID = 1757957 
     AND wt.operation_seq_num = 10; 

Die Tische sind Oracle ebs WIP Tabellen, die Daten korrekt sind, aber das ist müssen für Tausende von Datensätzen ausgeführt werden.

Wie kann ich es tunen?

kann ich den EXPLAIN-Plan hier anhängen?

+1

1000 Zeilen sind nicht so viele. Irgendwelche Indizes? – jarlh

+0

Ja, ich habe Indexe. –

Antwort

1

Zunächst lernen Sie, die richtige explizite JOIN Syntax zu verwenden. Einfache Regel: Nie Kommas in der FROM Klausel:

SELECT COALESCE(sum(WT.TRANSACTION_QUANTITY * WTA.RATE_OR_AMOUNT), 0) 
     -- INTO l_resource_cost 
FROM APPS.WIP_TRANSACTION_ACCOUNTS WTA JOIN 
    APPS.WIP_TRANSACTIONS WT 
    ON WTA.TRANSACTION_ID = WT.TRANSACTION_ID AND 
     WTA.ORGANIZATION_ID = WT.ORGANIZATION_ID 
WHERE WTA.ACCOUNTING_LINE_TYPE = 7 AND WTA.WIP_ENTITY_ID = 1757957 AND 
     wt.operation_seq_num = 10; 

Indexes wird die Abfrage helfen. Ich würde empfehlen:

  • APPS.WIP_TRANSACTION_ACCOUNTS(ACCOUNTING_LINE_TYPE, WIP_ENTITY_ID, RATE_OR_AMOUNT)
  • APPS.WIP_TRANSACTIONS(TRANSACTION_ID, ORGANIZATION_ID, operation_seq_num, TRANSACTION_QUANTITY).
+0

beide Arten von sqls sind ausprobiert, das einzige, was Ihre Antwort hat, und ein majec einschließlich der Spalten (rate_or_amount und transaction_quantity) in Indizes. danke –

+0

Ich habe eine andere Abfrage, die sehr lang ist. Wie kann ich diese Abfrage teilen? Kann ich diese Frage an meine Frage anhängen? –