상속과 관계
https://swingswing.tistory.com/6
ie 표기법 , baker 표기법
https://b-programmer.tistory.com/357
함수종속성
Oracle PS - Precision Scale
PS 를 필수로 지정하자, 나중에 DBMS를 옮긴다던지 데이터 유형을 변경할 때 그 때 데이터를 분석하기는 어렵다.
https://m.blog.naver.com/drv98/221620162305
Oracle InitTrans
https://blog.naver.com/nunoyoon/90038240419
statement cache
https://log-laboratory.tistory.com/240
lateral sql
통계정보
분포도
https://khdscor.tistory.com/50
Oracle의 Index
별도 index를 지정하지 않으면 B-Tree 인덱스 구조이다.
오라클의 경우 인덱스 구성 컬럼이 모두 NULL인 경우 인덱스를 저장하지 않는다.
Leaf BLock은 항상 인덱스 키 컬럼 순으로 정렬되어 있어 범위 스캔이 가능하다.
인덱스는 위로 성장한다.
인덱스는 Single BLock I/O를 수행한다.
데이터 삭제시 테이블의 데이터는 삭제되지만, 인덱스는 논리적으로 삭제(flag) 한다. DML이 많은 인덱스 컬럼인 경우 주기적인 Rebuild 필요
인덱스를 잘 타면 읽어야하는 버퍼가 확연히 줄어든다. ( Tree 를 잘타서 방향을 찾을 수 있으니까 )
composite tree일 경우 null도 저장한다.
composite 인덱스를 사용하기 위해 고려해야할 것
1단계 항상 사용되는가?
2단계 항상 = 로 사용되는가?
3단계 어느것이 더 좋은 분포도를 갖는가?
4단계 자주 정렬되는 순서는?
5단계 부가적으로 추가시킬 컬럼은?
인덱스 활용이 불가능한 경우
1. 인덱스 컬럼절을 변형한 경우
where to_chat(등록일,'YYYYMMDD') = 20200910
==> where 등록일 = to_date('20200910,'YYYYMMDD'')
2. 묵시적으로 데이터 형 변환이 일어난 경우
where 등록일 = '20200910'
==> where 등록일 = to_date(20200910,'YYYMMDD')
3. 부정형으로 조건을 사용한 경우
==> a,b,c 일때 != a 보다는 in (b,c) 로 하는 것이 좋다
4. Like 연산자 앞에 %를 붙이는 경우
5. 인덱스에 있는 컬럼은 모두 작성해야한다. (필요없는 조건이더라도 )
처음,중간, 마지막 모두
6. Index의 OR 조건이 필요한 경우 or 인덱스를 추가하거나 union dmfh cjflgkfrjt
예측 실행계획과 Run-time 실행계획(성능)은 다르다.
동일한 쿼리에 대해 Explain Plan을 통해 조회한 예측 실행계획과 실제 수행한 실행계획이 다른 경우가 발생한다.
바인드 피킹 - 실제 런타임에는 데이터를 바인딩하는 과정이 있음
변수를 바인딩하면서 변수 형변환등이 생길 수 있음
where절에서 인덱스를 타야할 수도 있는 쿼리에는 sysdate를 사용하지않는다!!
...
ANSI SQL
'Database' 카테고리의 다른 글
Linux에 MySQL client 설치하기 (0) | 2023.01.17 |
---|---|
Rolling Update Vs Blue-Green Update (0) | 2022.11.02 |
Oracle 여러 다중 행 Insert (Insert All) (0) | 2022.10.25 |
[Oracle] Describe Table (0) | 2022.06.14 |
[MySQL] Limit 성능 (0) | 2021.07.01 |