반응형

Database/Oracle

    [Oracle] 해당 월의 말일자만 조회하기, 가장 최근 일자만 조회하기 (Feat. LAST_DAY 함수)

    [Oracle] 해당 월의 말일자만 조회하기, 가장 최근 일자만 조회하기 (Feat. LAST_DAY 함수)

    [ 상황 ] 매일 들어오는 데이터를 월별로 말일자만 집계하여 보려고 합니다. 이때, 해당월이 말일자에 도래하지 않아도 가장 최근 일자로 집계하여 보고자 합니다. ex) 오늘이 2022-06-22인 경우, 2022-06-31의 데이터가 없으니 2022-06-22 데이터로 집계 [ 해결방법 ] 1) TABLE에 들어있는 날짜 데이터 파악하기 - 아래와 같이 날짜로 GROUP BY하여 조회하면 일자별로 데이터가 존재하는 것을 확인할 수 있습니다. SELECT PROC_DATE FROM TABLE GROUP BY PROC_DATE ORDER BY 1 DESC 2) LAST_DAY 함수 사용하기 LAST_DAY 함수란? - 오라클에서 해당월의 마지막 날짜를 가져오는 함수 - 사용법 LAST_DAY(DATE 값) ..

    [Oracle] 쿼리 속도 향상 시키기 (Feat. 좌변을 가공하지 않기)

    [Oracle] 쿼리 속도 향상 시키기 (Feat. 좌변을 가공하지 않기)

    스크립트를 작성할 때, '좌변을 가공하지 말라'는 이야기를 들었는데 왜 그럴까요? 아래와 같은 경우에 DB 인덱스를 사용할 수 없다고 합니다. 인덱스 컬럼이 비교되기 전에 변형이 일어나는 경우 부정형으로 조건을 기술(not)한 경우 인덱스 컬럼이 NULL로 비교되는 경우 옵티마이저가 필요에 따라 상기 적용원칙을 준수했음에도 불구하고 특정 인덱스의 사용을 취사선택함으로써 사용되지 않는 경우 좌변을 가공하게 되면 인덱스를 사용할 수 없으므로 DB 컬럼을 가공하지 않고, 상수 부분을 가공해서 사용하도록 작성하는 것이 바람직합니다. [ 예시 ] 1) 올바르지 않은 예시 (좌변을 가공) 아래와 같이 좌변의 PROC_DATE를 가공하여 사용하게 되면 200 row(s) fetched - 507ms (+64ms) -..

반응형