이 글을 읽으면 카디널리티가 SQL에서 어떤 역할을 하는지 튜닝에 어떻게 적용하는지에 대해 알수 있어요.
카디널리티
카디널리티는 간단하게 컬럼에서 유니크한 값의 개수를 의미해요.
그렇다면 SQL 성능과의 직접적인 영향은 어떻게 될까요?
예시는 아래와 같아요.
-- TABLE_A 100만개의 데이터라고 가정
SELECT 1 FROM TABLE_A WHERE ID ='choiminsu';
/*
만약 TABLE_A의 테이블의 컬럼 ID가 유니크한 값일 경우 100만개의 유니크한 값
즉 카디널리티는 100만개로 카디널리티가 높다라고 표현이 가능해요.
*/
SELECT 1 FROM TABLE_A WHERE GENDER ='F';
/*
반대로 TABLE_A의 테이블의 컬럼 GENDER를 조건으로 사용할 경우
100만개의 데이터중 유니크한 값은 2개로
카디널리티가 낮다라고 표현할 수 있어요.
*/
카디널리티의 경우 높을 경우 조회의 효율이 올라가며 반대로 낮을수록 조회의 효율이 떨어지게 돼요.
선택도
선택도는 카디널리티를 전체 레코드 수로 나누어 선택도의 비율을 계산할 수 있어요.
선택도 = 카디널리티 / 전체 레코드 수
선택도와 카디널리티의 값이 높으면 높을수록 인덱스 효율이 증가하게 되죠.
SQL 튜닝 작업
인덱스를 설계할때 카디널리티와 선택도를 확인하며 인덱스를 생성 또는 수정 삭제를 진행하게 돼요.
개발자의 경우 카디널리티와 선택도를 분석하여 인덱스 순서를 정의하며 옵티마이저가 최적의 인덱스를 찾을수 있도록 순서를 지정하여 처리해야 해요.
💬 댓글 0
불러오는 중...