반응형
옵티마이저는 쿼리 실행 비용을 계산하기 위해 다양한 통계정보를 사용합니다.
그리고 그 중에서 비용 계산의 출발점이 되는 선택도와 카디널리티에 대해서 알아보겠습니다.
공식을 활용해 답을 구하는 방식으로 단답형 문제 출제될 가능성이 있으니 공식을 꼭 외우시길 당부드립니다.
선택도(Selectivity)
선택도란 전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율이며
선택도를 계산하기 위해서는 NDV가 사용됩니다.
NDV :컬럼 값 종류 개수 (Number of Distinct Values) 선택도 = 1 / NDV |
카디널리티(Cardinality)
전체 레코드 중에서 조건절에 의해 선택되는 레코드 개수를 뜻 합니다.
카디널리티 = 총 로우 수 x 선택도 = 총 로우 수 / NDV |
예를 들어
상품분류 칼럼에 '가전', '의류', '식음료', '생활용품' 4개의 값이 있을 때 NDV는 4이고 아래 조건 절에 대한 선택도는 25% (= 1/4) 다. where 상품분류 = '가전' 만약 레코드가 10만 건이면, 카디널리티는 2만 5천이다. (= 10만 * 25%, 10만 / 4) |
옵티마이저는 이렇게 카디널리티를 구하고, 그만큼의 데이터를 엑세스하는 데 드는 비용을 계산해서
테이블 엑세스 방식, 조인 순서, 조인 방식 등을 결정합니다.
* 한국데이터산업진흥원의 SQL 전문가 가이드 내용과 디비안의 오라클 성능 고도화 원리와 해법 내용을 기반으로 작성하였습니다.
반응형
'IT 이야기 > DB' 카테고리의 다른 글
[DB 기술면접] 페이지와 익스텐트 (SQL Server 단일 익스텐트/혼합 익스텐트) (0) | 2022.10.09 |
---|---|
[MSSQL] 중복 제거 조회 (distinct, group by) (0) | 2022.09.16 |
[MSSQL] 문자열 자르기 (SUBSTRING, RIGHT, LEFT) (0) | 2022.09.13 |
[MSSQL] Lock 확인 및 Kill 하는 방법 (2) | 2022.09.12 |
[SQLP 시험대비 요약/단답형] 공유커서, 세션커서, 애플리케이션 커서 (0) | 2022.09.11 |