본문 바로가기
Database/Oracle

[oracle] db review

by oncerun 2021. 5. 15.
반응형

데이터베이스를 다루면서 혹은 SQL문을 작성할 때 무의식 적으로 실수하는 경우가 발생했다.

복습을 한번~

 

1. Index Suppressing Error는 인덱스를 구성하고 있는 칼럼에 대한 함수의 적용 , 칼럼의 변형, 계산식 등으로 인해 

기존의 칼럼이 변형되어 인덱스를 타지 못하는 상태이다.

의식하지 못하는 에러는 묵시적 형변환 시 속도가 느려질 수 있는데, 그 이유는 해당 칼럼에 인덱스가 생성되어 있는 경우 묵시적 형 변환이 생기면 그 인덱스를 사용하지 못하게 됨으로 써 인덱스를 타지 못하는 Index Suppressing Error가 발생하기 때문이다.

 

2. 집합연산자 사용 시 UNION, INTERSECT, MINUS는 결과를 정렬하여 출력한다. 그렇기에 의도치 않은 성능 저하가 발생할 수 있음

 

3. 집합연산자는 SELECT절에 오는 칼럼 개수 동일, 데이터형이 동일해야 한다.

 

4. 집합 연산자 MINUS는 큰 결과 집합에서 작은 결과 집합을 차집합으로 많이 사용되며  순서에 영향을 받는다.

 

5. 날짜 함수중 ADD_MONTHS로 쉽게 달을 추가하거나 뺄 수 있다. 두 날짜 중 큰 날짜를 먼저 적지 않으면 음수가 나온다. 같은 달일 경우 특정 규칙으로 계산되어 나온다(29,30,31일), 2월의 윤일은 구분하지 못한다.

 

6. LAST_DAY함수는 은근 많이 사용된다.

 

7. 날짜 함수에서 ROUND는 12시 기준으로 내일, 오늘이 결정되지만 TRUNC는 그냥 전부 당일이다.

 

8. 리터럴을 사용할 때 작은따옴표를 표현하기 위해 '' 두 번 적을 수도 있지만 q'[it's new]'로 표현할 수도 있다.

 

9. DISTINCT는 중복을 제거하지만 다중 칼럼일 경우 그룹 지어서 중복행을 제거한다. 즉 전부 전용된다. 자리는 무조건 앞

 

10. LIKE 연산자에서 _(UnderScore)도 활용하자 하나의 자리를 차지하며 어느 문자, %, _ 가 조건 맨 앞에 올 시 인덱스 못 탐

 

11. SQL문에서 &는 사용자의 입력을 받는다.

 

12. ORDER BY는 인덱스가 활용되면 속도가 개선된다.

 

13. 숫자를 문자로 변환 시 TO_CHAR()에서 9,0,$,쉼표, 소수점 등을 사용하여 쉽게 데이터를 표현할 수 있다.

 14. Oracle DECODE함수는 중첩해서 쓸 수 있다. DECODE(A, B, DECODE(C, D,1,2)) : A가 B이고 C가 D이면 1을 아니면 2를 출력

 

15. = 조건은 DECODE가 깔끔하나 범위 인경우 CASE WHEN 조건 THEN 값 END로 사용할 수 있다. 

 

= 조건으로 CASE문을 사용할 때는 CASE 'A' WHEN 'B' THEN 'C' END A가 B라면 C이다.

범위 조건일 경우 CASE WHEN 'A' > 0 AND 'A' <10 THEN 'C' END A가 0보다 크고 10 보다 작으면 C이다 식으로 많이 쓴다.

 

 

반응형

'Database > Oracle' 카테고리의 다른 글

[Oracle 12c] Sequence  (0) 2021.05.16
DBMS_RANDOM 패키지  (0) 2021.05.16
CHAR ? VACHAR?  (0) 2021.04.26
ORACLE SQL NULL관련 함수  (0) 2020.04.20
ORACLE SQL 변환함수  (0) 2020.04.20

댓글