1

 

보통 조인이 잘못되면 cartesian join이 일어납니다.(보통 교차곱을 사용 할 경우는 없음) 이를 확인하고 수정하면 됩니다.

 

2

 

Nonequi join이 있는 경우 Hash join이 불가능 합니다. 보통 이러한 방식은 피하는게 좋음

 

ex) WHERE e.sal between s.losal and s.hisal    <==  이러한 방식으로 사용하지 말자

 

3

 

Hint는 안쓰는걸 추천. Hint를 써야 할 상황이면 구조를 변경하거나 새로운 쿼리를 작성하는게 좋다.

 

4

 

/*+ ORDERED */

/*+ APPEND */

/*+ PARALLEL(table degree) */  =>  DBA와 상의가 필요한 부분

 

이 세가지 힌트를 자주 사용합니다.

 

5

 

CASE와 DECODE의 차이는 CASE구분의 성능이 훨씬 좋으니 그냥 CASE써라

 

6

 

ROLLUP을 자주 사용하자 !  => union으로 되어있는 쿼리를 ROLLUP으로 변경할 수 있으면 변경하자

 

7

 

WITH절로 VIEW를 만들면 성능이 좋아진다 ??

 

8

 

CUBE를 사용해보자 ... !

 

9

 

http://www.gurubee.net/lecture/2382

 

윈도우 함수(WINDOW FUNCTION)

제6절 윈도우 함수(WINDOW FUNCTION)행과 행간의 관계를 쉽게 정의하기 위해 만든 함수가 바로 WINDOW FUNCTION이다.윈도우 함수를 활용하면 복잡한 프..

www.gurubee.net

역시 DB 쿼리는 함수위주로 작성해야한다. 쿼리작성할때 함수위주로 생각하자. 만약 안된다면 그때 다른 방식을 찾아보도록하자

 

10

 

테이블 데이터 타입 제대로 확인하고 쿼리를 작성하자. 데이터타입이 맞지않으면 인덱스를 타지 않을 수 있다.

 

11

 

정규표현식이 함수보다 더 성능이 좋다.

 

12

 

인덱스 순서를 잘 보자. 인덱스 순서만 바꿔도 성능이 달라질 수 있다. (가장 적은 데이터를 인덱스를 앞으로 놓자 ! 범위

                                                                                          를 좁혀서 1차 가공해서 많이 걸러내자)

 

13

 

결합인덱스를 생성할때는 순서를 잘 생각해서 생성하자

 

14

 

상호참조 서브쿼리는 성능을 떨어트린다.

 

15

 

사례2 => 사진으로 설명

 

사례3 => 사진

        => 실행계획에서는 index를 사용한다고 하지만 실제로 데이터를 가져올때는 타지 않는다? 확인 필요

 

사례4 => 사진

        => Drived 테이블을 재설정 해야한다.(조인순서 재설정) 왜냐하면 Drived 테이블에서 조인 범위를 좁히면 다음 조

             인에 더욱 유리하다.

 

사례5  => CA와 DA의 값이 많은 줄 알고(데이터 분포 잘못 판단) 의도적으로 인덱스를 막았지만, 인덱스가 먹혀들어갔

              다.

         => 인덱스 순서 뒤집어야한다. (인덱스 순서 새로 조정해서 다시 생성)

         => 사진

 

사례6 => 사진

        => 인덱스를 새로 설정하고(JHCOD + JEPUM) 새로 설정한 컬럼이 인덱스를 탈 수 있도록 WHERE절 수정

 

사례7 => 사진

         => SUGA_SERL_IX 의 인덱스 순서를 바꿔야한다. (EDSC로 먼저 걸러내고 SERL로 걸러내는게 훨씬 좋음)

 

사례8 => 사진

        => 데이터를 1차 가공할때 가장 적은 데이터를 가져오는게 핵심 !!!

 

사례9 => 사진

        => 테이블 A와 테이블B의 조인에서 인덱스를 탈 수 없습니다. 인덱스의 위치가 뒤에있어서

        => 조인 시 사용된 결합 인덱스의 컬럼순서를 변경

 

사례10 => 사진

          => 사례9와 일맥상통

 

사례11, 12, 13 => 사진

                   => 인덱스 순서 재설정

 

사례14 => IS NULL은 인덱스를 타지 못한다.

           => 사진

 

사례15 => OUTER조인 할 때는 IN, OR, SUBQUERY를 사용하지 못합니다.

          => 오류뜸

 

사례16 => OUTER조인으로 값을 잘 가져오다가 마지막에 B.CENTER으로 걸러내버려서 원하는 데이터가 모두 나오지 못

               했습니다. B.CENTER에도 OUTER조인을 걸어주면 해결 할 수 있습니다.

          => 사진

 

사례17, 18, 19 => 개인적으로 해보라는 말씀

 

사례20 => 조인 순서 잘못. 범위를 확 줄일 수 있는 테이블을 먼저 조인해야합니다.

          => ORDERED 힌트로 테이블 조인 순서를 적절하게 변경하면 좋습니다.

 

사례21 => NULL처리

 

사례22 => 어렵네..ㅎ 이건 쫌 봐야긋다잉?

 

사례23 => COUNT값에 이상이 생김

          => MAX에서 MIN을 뺄때, 전체 테이블 조회할 필요없이 MAX쿼리와 MIN쿼리를 따로 구해서 전체 테이블 조회

               를 막을 수 있음

 

 

 

 

 

 

 

 

'STUDY > DB' 카테고리의 다른 글

[DB] SQL 성능 튜닝  (0) 2019.11.01
[DB] Oracle SQL 튜닝 및 응용 - 2  (0) 2019.10.29
[DB] Oracle SQL 튜닝 및 응용 - 1  (0) 2019.10.28
[DB] View란?  (0) 2019.01.02
[DB] SQL학습 사이트  (0) 2019.01.02

+ Recent posts