Hi I am tuning
one legacy code. we have below 2 tables in a big query.
fnd_currencies, and pa_commitment_txns
I have seen in from clause
fnd_currencies fca,
fnd_currencies fcr,
fnd_currencies fcp,
pa_commitment_txns pct
first table has been used thrice and it has been outer joined with same column
with same table.
AND fca.currency_code(+) = pct.acct_currency_code
AND fcr.currency_code( +) = pct.receipt_currency_code
AND fcp.currency_code(+) = pct.project_currency_code
Can above 3 lines be handled using fnd_currencies
table only once. is there any smarter way to do that?
You can ensure that you only query fnd_currencies
once by using a subquery factoring clause. That would look like this (and keeps @gordonlinoff happy by using ANSI 92 syntax):
with ccy as ( select *
from fnd_currencies )
select fca.descr as acct_currency
,fcr.descr as receipt_currency
,fcp.descr as project_currency
,pct.*
from pa_commitment_txns pct
left outer join ccy fca on fca.currency_code = pct.acct_currency_code
left outer join ccy fcr on fcr.currency_code = pct.receipt_currency_code
left outer join ccy fcp on fcp.currency_code = pct.project_currency_code
Whether this will actually give you an improved execution time depends on the details of your data, which you haven't vouchsafed to us.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.