All thing of the world!

Oracle ANY_VALUE 설명 : 오라클 함수 본문

IT/Oracle DBMS

Oracle ANY_VALUE 설명 : 오라클 함수

WorldSeeker 2021. 6. 24. 10:04

1. 함수의 목적
   

    Oracle ANY_VALUE 인수로 들어온 expr의 첫번째 값을 반환하도록 최적화되어 있다. 들어오는 값에 대해 비교연산을 수행하지 않고 순서를 정렬하지 않는 비결정적인 성질을 가지고 있음으로 MIN, MAX보다 훨씬 빠르다. 그렇기 때문에 group by에 지정된 세트내에서 expr의 값들은 동일해야 결과를 보장 받을 수 있다. 동일하지 않으면 의도치 않은 결과를 불러올 수 있으니 주의해야 한다.

 

샘플을 통한 퀵뷰를 통해 조인 후 집계시 MIN, MAX 대신 ANY_VALUE를 사용한 것을 보자.

 

* 주의) 19C(19.8) 이상에서만 작동
  
2. 샘플을 통한 개념 퀵뷰

    1) 19C이하에서 아래와 같이 쿼리로 group by를 수행하였다면  (조인 후 집계)

       select c2.country_id, c2.country_name, count(*) number_of_cities

       from cities c1, countries c2

       where c2.country_id = c1.country_id

       group by c2.country_id, c2.country_name;

 

    2) 19C 이하에서 Min/Max를 사용하여 group by에 country_name을 추가하지 않고도 동일한 효과 (조인 후 집계)

       select c2.country_id, min(c2.country_name) country_name, count(*) number_of_cities

       from cities c1, countries c2

       where c2.country_id = c1.country_id

       group by c2.country_id;

 

    3) 19C 이상에서 any_value를 사용하여 min/max보다는 빠르게 수행 (조인 후 집계)

       select c2.country_id, any_value(c2.country_name) country_name, count(*) number_of_cities

       from cities c1, countries c2

       where c2.country_id = c1.country_id

       group by c2.country_id;

    

3. 사용방법
 



4. 함수 PARAMETER 설명

 

[DISTINCT, ALL]

쿼리 결과에 전혀 영향을 주지 않는다. 사용할 필요 없음 

 

[expr]
LONG, LOB, FILE, or COLLECTION를 제외한 모든 데이터 타입이 사용 가능함

 

 

5. 다양한 샘플표현

 

 

▶▶ Oracle DBMS 내장함수 모음 : atotw.tistory.com/category/IT/Oracle%20DBMS

 

Comments