Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- sql최적화
- 오라클
- SQL
- 로고추출
- 정처기3회실기
- db
- Android
- myBatis
- 시나공IT
- 개발자
- 텍스트뷰안보임
- 로고흰색배경
- 로고투명
- 국가공인sql개발자
- 로딩다이얼로그
- 안드로이드
- 2020정처기실기
- java
- 어플로딩
- 웹앱개발
- Framework추천
- 2020정보처리기사3회
- 7일전사
- 2020정처기3회
- db최적화
- DB자격증
- 실기합격후기
- oracle
- sqlmapping
- spring
Archives
- Today
- Total
Everything counts - 라키의 IT 블로그
[DB] 오라클 사용자 정의 함수 조회, 사용 이유 본문
에브리데이 코드를 보다가 단골점포 설정하는 부분에서 내 위치에 가장 가까운 점포들이 뜨게 하는 부분을 맵으로 표시할 수 있을까 하고 고민해보았다. 그러면서 알게 된 부분이 현재 위치를 알기 위해 웹 window 객체의 navigator객체를 사용했다는 것, 그리고 그 수치로 Oracle function 에서 연산하여 가까운 위치의 점포를 조회해오고 있다는 것이다. 그 중 연산에 대해 이해하고 왜 사용하는지를 알고 싶어 사용자 정의 함수에 대해 공부해보았다.
우선 사용자 정의 함수 내용을 조회하는 방법은
SELECT *
FROM all_source
WHERE name = '함수이름';
해서 내용을 조회 해보니 엄청난 연산수식이 들어있다. 그런데 이런 연산을 굳이 사용자 정의 함수로 만든 이유가 궁금했다.
* Oracle 사용자정의 함수 이용 주의점
함수와 프로시저가 너무 많으면 라이브러리 캐시에서 관리할 오브젝트 개수와 크기가 증가해 효율성이 저하된다. 꼭 필요한 경우만 사용. SQL수행이 많이 필요한 작업은 오라클 함수/프로시저를 이용하도록, 연산 위주의 작업은 앱서버단에서 처리하도록 설계하면 좋다.
이런 원리로 따져봤을 때 가까운 거리의 점포를 구하는건 사용자 정의 함수보다 앱 내에서 연산하여 구하는게 더 효율적이고 빠를 것 같다는 결론이 나왔다. 그런데 SQL 데이터를 이용한 게 아닌 단순 수식 연산도 더 성능에 좋지않은지는 조금 더 공부해봐야 알 것 같다.
- 참고 '오라클 성능 고도화 원리와 해법'
'프로그래밍 > DB' 카테고리의 다른 글
[JPA] mybatis 에서 JPA로 옮겨 갈 시간인가? (0) | 2022.04.06 |
---|---|
[DB] 쿼리 최적화 및 튜닝 Query Optimization (0) | 2021.11.11 |
[Oracle] 오라클 WITH란? (0) | 2021.10.08 |
[MyBatis]sql, include 태그란? (0) | 2021.10.08 |