효율적인 SQL 작성법
SQL 용어 설명
| 용어 | 정의 |
|---|---|
| 예약어 | SOL에서 사용하도록 DB 엔진에서 예약된 단어(Reserved Words)
ex) SELECT, UPDATE, INSERT, DELETE, FROM, SET, WHERE |
| 식별자 | 테이블 또는 컬럼 식별자(Identifier)
ex) 테이블명, 컬럼명, ALIAS 등 |
| 연산자 | 계산 및 비교에 사용되는 연산자
ex) >, <, =, +, -, BETWEEN, IN, EXISTS |
| 스칼라 쿼리 | SELECT 절에 사용되는 서브쿼리(SUB-OUERY)를 스칼라(SCALAR) 쿼리라고 함
ex) SELECT (SELECT NVL(AA,1) FROM TB AA) AS COLI .... FROM DUAL; |
| 인라인뷰 | FROM 절에 사용되는 서브쿼리(SUB-QUERY)를 인라인뷰(INLINE VIEW)라고 함
ex) SELECT .. FROM (SELECT COLT FROM TB BB) A WHERE A.COL1 = 1' |
| 서브쿼리 | WHERE 절에 사용되는 서브쿼리(SUB-QUERY)를 서브쿼리라고 함
ex) SELECT. FROM TBLAA WHERE EXISTS (SELECT 1 FROM TB CC WHERE. |
| 함수 | DBMS에서 기본적으로 제공하는 함수
ex) CASE, SUM, TO_CHAR |
| 변수 | SOL에 사용되는 변수명(바인드 변수)
ex) #(loanNo) |
SQL 작성 규칙
- SQL 작성은 ORACLE 표준에 따라 작성하고, ANSI SOL은 사용하지 않는다.
- 전체 대문자 작성을 원칙으로 한다. (SQL ID, 바인드 변수는 예외)
- 한 라인(행)의 최대 길이는 100열 이내로 한다. 복잡한 연산 등으로 인해 최대 길이가 100열을 초과할 경우 다음 라인을 사용하되 연산자가 아닌 컬럼명이나 괄호로 시작하도록 하고 컬럼 시작 위치를 정렬시킨다.
- 성능 이슈 발생 시 신속한 식별 및 조치가 가능하도록 모든 SOL에는 반드시 아래의 형식에 따라 SOL 식별자를 명시하여야 하며, SOL의 선두 라인(1행)에 작성한다.
- ※ 작성 형식:/* [작성자ID]:[Namespace] [SQL ID]
- ex) /* 홍길동: AB.cstNoBasEbi.cstService.retvlstcomcd
- 작성자 ID +
- 프로젝트 투입 시 부여된 계정정보
- ②mapper namespace
- "NAX-TS-AN-06(개발표준 정의서).docx"의
- ③ SOL ID
- SQL MAP 작성 표준 참조
- 힌트(HINT)는 SELECT, UPDATE, DELETE, INSERT 구문과 같은 라인에 작성하고 튜너/DBA의 사전검토를 거치지 않은 임의의 힌트구문 사용은 금지한다.
- ex) SELECT /*+ LEADING(A) USE_NL(B) */