티스토리 뷰

반응형

회사에서 특정 쿼리 수행시간이 오래 걸려서 튜닝 요청을 받았습니다.

처음 보는 쿼리라서 먼저 실행계획을 봤는데, 특이 사항이 없어서 쿼리에서 처리하는 데이터를 본 후에

문제점을 발견할 수 있었습니다.

오라클 11g  였는데, 쿼리의 SELECT LIST 부분에 WM_CONCAT 함수가 수행 시간을 오래 걸리게 만들었습니다.

저는 평소에 "행 -> 열"로 만들어야 하는 경우에는 주로 "LISTAGG"  함수를 사용합니다.

WM_CONCAT은 사용하기는 편하나, 오라클 매뉴얼에도 없는 비공식 함수기 때문에 가급적 사용을 안합니다.

WM_CONCAT이 문제가 되었던 거는 처리해야 하는 행(값)이 너무 많아서 였습니다.

조회 조건을 변경 하면은 대부분 10개 내외로 WM_CONCAT() 함수가 사용이 되어졌는데, 이번에 느려지게 된 쿼리에서는

15,000개가 넘은 행(값)을 처리하던게 문제가 되었습니다.

알고보니 퇴사한 개발자분이 작성했던 것인데, 불필요한 부분이라고 해서 쿼리에서 제거하는 것으로 마무리 되었습니다.

 

그리고 오라클 12c 부터는 WM_CONCAT 함수를 사용할 수 없습니다.

 

 

 


 

반응형