함수는 총 출력되는 row 마다 반복되기 때문에 좀 무겁습니다.
함수 자체에 쿼리가 없어도 느린데 쿼리까지 있으면 더 느리겠죠.
말씀하신 dual과 함께 스칼라서브 쿼리형태로 바꾸면 스칼라서브쿼리 캐싱 효과로
같은 입력값에 대해서는 함수를 수행하지 않고 기존에 수행하였던 결과값을 재활용하게 됩니다.
row마다 함수로 던져주는 값이 거의 비슷한 값이라면 빨라지겠지만 다른 값이 계속 주어진다면
효과가 없겠죠.
함수를 없애고 스칼라서브쿼리로 바꿀 수 있는지 먼저 검토해보시고 정~~ 어렵다면
함수로 구현하되 함수 내부의 쿼리도 비효율이 없도록 만드셔야 전체 쿼리 속도가 올라갈겁니다.