Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 카카오코딩테스트
- 친절한 sql튜닝
- java
- SQL
- DBA
- Undo
- 친절한 SQL 튜닝
- 컬렉션프레임워크
- springboot
- Spring
- SQLP
- 백준
- DB
- 멀티쓰레드
- 서버
- Oracle
- 상속
- 자바
- 인덱스 튜닝
- Swing
- 메소드
- 깃허브
- 생성자
- 오라클
- 클라이언트
- 인덱스
- 인스턴스
- 클래스
- db버퍼캐시
- socket
Archives
- Today
- Total
프리 정보 컨텐츠
친절한 SQL 튜닝 - 7장 SQL 옵티마이저 본문
반응형
7장 SQL 옵티마이저
7.1.1 선택도와 카디널리티
선택도
- 선택도란 전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율이며 가장 단순한 '=' 조건으로 검색할 때의 선택도를 보면 컬럼 값 종류 개수(NDV) 를 이용해 아래와 같이 구한다.
선택도 = 1 / NDV
카디널리티
- 카디널리티란, 전체 레코드 중에서 조건절에 의해 선택되는 레코드 개수이며 아래와 같이 구한다.
카디널리티 = 총 로우수 * 선택도 = 총 로우 수 / NDV
-- 예를 들어 상품분류 컬럼에 가전, 의류, 식음료, 생활용품 네 개의 값이 존재
-- 조건절에 대한 선택도는 25%이며, 전체 레코드가 10만건이면 카디널리티는 2만 5천이다.
- 옵티마이저는 이렇게 카디널리티를 구하고, 그만큼의 데이터를 액세스하는데 드는 비용을 계산해서 테이블 액세스 방식, 조인 순서, 조인 방식 등을 결정한다.
- 선택도를 잘못 계산하면, 카디널리티와 비용도 잘못 계산하고, 결과적으로 비효율적인 액세스 방식과 조인 방식을 선택하게 된다.
순위를 결정하는 RBO 규칙

-- 고객유형코드 조건을 만족하는 고객이 전체에서 90%라면, RBO는 결코 좋은 선택을 했다고 보기 어렵다. (인덱스 손익분기점)
SELECT *
FROM 고객
WHERE 고객유형코드 = 'CC0123'
-- BETWEEN(10위), 부등호 조건(11위)
-- 연령과 연봉 컬럼에 인덱스가 존재한다면 아래 SQL은 무조건 연봉 컬럼 인덱스를 사용함.
SELECT *
FROM 사원
WHERE 연령 >= 60
AND 연봉 BETWEEN 3000 AND 6000;
- 각종 파라미터를 적절한 값으로 설정하고, 통계정보를 잘 수입해 주고 나서 전략적인 인덱스 구성이 필수적으로 뒷받침되어야 한다.
반응형