회고

TIL_210826

코동이 2021. 8. 28. 00:34

1. Facts(사실, 객관)

- 개발자를 위한 오라클 SQL 튜닝 2장 인덱스 튜닝

- ORACLE ROWNUM 조사

2. Feelings(느낌, 주관)

- SQL 작성을 넘어서서 어떻게하면 성능을 끌어올릴 수 있는지 튜닝에 관심이 생겼다. 가끔 시스템에서 너무 느린 쿼리문을 본 경험들이 많다. 따라서, 해당 쿼리들을 어떻게 바꾸어야 하는지 평소 궁금증이 많았다. 또한 오라클 힌트, 인덱스등이 궁금하기도 했다. 책이 작아서 가볍게 들고다니기 좋았다. 출퇴근 시간을 이용해서 공부할 생각으로 보았고, 술술 읽혔다. 안타깝게도 실무 튜닝책이다보니 오라클 힌트에 대한 설명을 생략하고 바로 인덱스로 들어갔다. 몇초 걸리던 쿼리문이 몇초로 줄었는지 구체적으로 알 수 있어서 좋았다. 앞으로 단순한 쿼리문 뿐만 아니라 다양한 상황에서 쿼리문의 성능을 높이는 것도 관심을 가질려고 한다.

 

3. Findings (배운 점)

오라클 index 생성으로, 전체 테이블을 풀스캔하지 않고, 원하는 칼럼만 조회할 수 있다. 단일 테이블만 조회하는 경우에 또한 특정 칼럼들만 필요하다면 그 성능은 상당히 효과를 발휘한다. 

CREATE INDEX TB_ORD_IDX02 ON TB_ORD(ORD_DT, ORD_NM, ORD_ATM SALE_GB, PAY_GB);

다음은 index를 만드는 방식이고, where절 혹은 select절에 사용한 것들을 모아두고 사용하면 된다.

 

항상 모든 경우에 인덱스를 쓰는 것이 좋은 것은 아니다.(과유불급) 예를 들어, 선택도가 33%를 넘지 못한다면, 풀스캔을 하는 것이 낫다.

 

선택도란,

(1 /해당 칼럼이 가질 수 있는 값의 종류 ) * 100

 으로, 예를 들어 성별은 ('남', '여') 2가지 밖에 없으므로 선택도가 무려 50%이다. 이런 경우는 인덱스를 사용할 수 없다. 즉, 칼럼의 값이 다양하게 나오면 나올수록 인덱스의 성능이 발휘된다.

 

4. Affirmation (자기 선언)

나는 책을 읽고 공부하는 것을 통해 계속 실력을 발전시키는 개발자다.

반응형