하나의 지불에 둘 이상의 할당이있을 수 있으므로 첫 번째 일치 (rownum = 1 인 경우) 만 고려해야하므로 조인에 하위 쿼리를 추가해야합니다.조인의 하위 쿼리는 where 절의 외부 쿼리에서 테이블을 사용해야합니까?
그러나 외부 쿼리의 pmt를 할당 조인의 하위 쿼리에 추가하는 것이 가장 적합한 지 잘 모르겠습니다.
실적이 좋지 않을 때마다 다르게해야합니까?
SELECT
pmt.payment_uid,
alt.allotment_uid,
FROM
payment pmt
/* HERE: is the reference to pmt.pay_key and pmt.client_id
incorrect in the below subquery? */
INNER JOIN allotment alc ON alt.allotment_uid = (
SELECT
allotment_uid
FROM
allotment
WHERE
pay_key = pmt.pay_key
AND
pay_code = 'xyz'
AND
deleted = 'N'
AND
client_id = pmt.client_id
AND
ROWNUM = 1
)
WHERE
AND
pmt.deleted = 'N'
AND
pmt.date_paid >= TO_DATE('2017-07-01')
AND
pmt.date_paid < TO_DATE('2017-10-01') + 1;
올바른지 여부는 실행했을 때의 결과에 달려 있습니다. –
큰 데이터를 다루고 있으며 쿼리가 매우 느리게 실행됩니다. 이것이 성능 저하에 기여할 수 있는지 궁금합니다. 가능한 경우 피해야하는 항목 인 경우 ... – NoobSter
하위 쿼리의 상관 관계가 느려질 수 있으므로 rownum에 의존하여 첫 번째 "데이터에 일부 고의적 인 명령을 부과하지 않는 한. 예를 들어 할당 테이블에 날짜 또는 시간 소인 열이 있습니까? "만든 날짜"? (그렇다면 해당 열의 이름은 무엇입니까?) –