본문 바로가기

DB22

[SQL] FUNCTION 수행과 SQL 성능문제 SELECT시 기존 사용자 함수를 만들어둔 것 때문에 속도가 나지 않아, 스칼라 서브쿼리로 처리했다. 그래도 속도가 잘 안나오길래 찾아보다가 구루비에서 좋은 글을(http://wiki.gurubee.net/pages/viewpage.action?pageId=27427586) 발견해서 정리해둔다. 1. FUNCTION은 최종 추출 결과만큼만 수행하자 [Function 사용 위치 변경전 ] select * from ( SELECT t1.c1, t1.c2,t2.c3,FN_C2_CODENM(t2.c4) c4 FROM FUNCTION_TABLE t1, C1_CODE_NM t2 WHERE t1.c2 = 0 AND t1.c3 = 'A' AND t1.c1 = t2.C1 AND t2.c4 IN (2, 4) order b.. 2022. 1. 24.
[ORACLE] EXPLAIN PLAN 실행 계획 EXPLAIN PLAN이란, SQL문이 어떻게 실행되고 작동하는지를 점검하기 위해 사용하고 SQL문의 액세스 경로를 확인, 튜닝할 수 있도록 SQL문을 분석, 해석해 실행계획을 수립한 후 PLAN_TABLE에 저장하는 명령어이다. 내용분석을 통해 SQL의 비효율적인 부분을 확인하고 튜닝포인트도 도출해낼 수 있다. - 사용방법 EXPLAIN PLAN [SET STATEMENT_ID = 'STATEMENT_ID'] FOR [SQL STATEMENT] SET STATEMENT_ID = 'STATEMENT_ID' : 1~30자 이내의 실행문 이름 SQL STATEMENT : 실행계획 할 SQL문 - TEST 1. 실행계획 저장 EXPLAIN PLAN FOR SELECT * FROM SAMPLE; 2. 실행계획 .. 2022. 1. 24.
[SQL] SELECT 쿼리 실행 순서 SQL SELECT 문의 순서를 알고나면 쿼리를 효율적으로 짜는데 도움이 된다. SELECT 문의 작성 순서와 실행순서를 정리해보자. - SELECT 작성 순서 SELECT FROM WHERE GROUP BY HAVING ORDER BY - SELECT 실행 순서 FROM : 테이블 확인 ON : 조인 조건 확인 JOIN : 테이블 조인 WHERE : 데이터 필터링 조건 확인 GROUP BY : 데이터 그룹화 HAVING : 그룹화 이후 데이터 조건 확인 SELECT : 데이터 추출 DISTINCT : 중복 제거 ORDER BY : 정렬 정리하자면, 데이터가 있는 곳을 찾아 (FROM) → 조건에 맞는 값을 찾고 (WHERE) → 원하는 데이터로 그룹짓고 (GROUP BY) → 그룹화한 데이터에서 조건에.. 2022. 1. 24.
[ORACLE] CONNECT BY LEVEL 활용하기 (구구단 & 날짜 만들기) 계층형 쿼리에서 자주 볼수 있는 CONNECT BY 절에서 , LEVEL을 사용하면, ​원하는 만큼의 행을 리턴 LEVEL을 사용하여 for문 처럼도 활용이 가능. - 1~n행 까지 출력 SELECT LEVEL FROM DUAL CONNECT BY LEVEL 2022. 1. 19.
[ORACLE] NVL,NVL2 (공백, NULL 값 치환) NULL 값을 특정값으로 출력하고 싶은 경우 사용하는 함수이다! - NVL NVL 은 컬럼값이 NULL 인 경우 지정된 값을 출력, NULL이 아닌 경우 원래 값을 출력하는 함수. NVL(컬럼,'NULL일때 반환값') NVL(컬럼,0) -- 컬럼값이 NULL일경우 0 으로~ NVL(컬럼,'') -- 컬럼값이 NULL일경우 '' 으로~ NVL(컬럼,SYSDATE) -- 컬럼값이 NULL일경우 현재날짜로~ - NVL 2 NVL2 는 컬럼값이 NULL이 아닌 경우 앞의 지정값1을 출력, NULL 인 경우 뒤의 지정값2를 출력하는 함수. NVL2('컬럼','NULL이 아닐 경우 지정값1','NULL일경우 지정값2') NVL2(여자친구,'커플','솔로') -- 여자친구 컬럼의 값이 NULL이 아닐경우 커플, NU.. 2022. 1. 19.
반응형