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
역시 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 |