강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

제로콜라 함 즐길까님의 프로필 이미지
제로콜라 함 즐길까

작성한 질문수

실전! 데이터베이스 완전정복 [설계편]

선택도(Selectivity)

인덱스 설계 시 컬럼 선택 기준

해결된 질문

작성

·

30

0

안녕하세요. 강사님의 좋은 자료 덕분에 장고 강의에 이어 데이터베이스 설계 강의까지 함께하고 있는 수강생 입니다.

 

강의를 듣던 중, "22.선택도 / 3:51" 내용을 보고 의문점이 생겨 질문 남깁니다.

 

배경

  • 선택도 값이 낮으면, 조건에 맞는 행이 적다 → 인덱스 효율이 증가한다.

  • 선택도 값이 높으면, 조건에 맞는 행이 많다 → 인덱스 효율이 떨어진다.

라는 설명을 듣고, "중복이 적을수록 인덱스를 생성하면 더 효율적이겠구나" 라는 정보를 얻었습니다.

 

그 후, "어떤 컬럼을 선택해야 할까?" 장표에는 그중에서 선택성이 높은 컬럼 위주로 인덱스 생성

이 효율적이라고 설명과 더불어 자료를 보여주셔서 의문이 생겼습니다.

 

질문

Q. 선택성이 높으면 조건에 맞는 행이 많아 중복되는 행을 다시 스캔하여 필터링 하기 때문에 인덱스 사용에 비효율적이지 않을까요?

 

그럼 나머지 강의를 일단 수강하며 배움에 즐거움을 만끽하러 가보겠습니다.

 

감사합니다.

 

답변 2

1

신동현님의 프로필 이미지
신동현
지식공유자

안녕하세요, 선택도와 선택성이라는 표현 때문에 오해가 생긴 것 같은데요.

"선택도가 낮다 = 조건에 맞는 행의 비율이 낮다(명확히 걸러진다) = 선택성이 높다" 라고 생각해주시면 됩니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. 제로콜라 함 즐길까님.

인덱스를 설계할 때 선택성(selecitivity)은 중요한 기준입니다. 선택성이란 전체 행에서 특정 조건을 만족하는 행의 비율을 뜻합니다. 여기서 중요한 부분은 “선택성이 높은 컬럼”이라는 표현이 약간 오해의 소지가 있을 수 있다는 점입니다.

  1. 선택성 높은 컬럼 선택: 선택성이 높다거나 낮다는 표현이 상대적일 수 있습니다. 데이터베이스에서는 주로 선택성 낮은(즉, 조건을 충족하는 행의 수가 적은) 컬럼을 인덱스 효율을 높이기 위해 선택합니다. 이는 불필요한 행들을 최소한으로걸러내고, 원하는 데이터에 더 빠르게 접근할 수 있게 하기 위함입니다.

  2. 용어의 혼동 가능성: 선택성이 높다고 한다면, 전체 행 중 더 많은 행이 조건에 부합하는 것을 의미할 수 있지만, 일반적인 인덱스 설계시의 문맥에서는 ‘선택성이 높다’는 표현이 선택적(특정)일 수록 인덱스가 더 잘 작동하는 경향이 있다고 이해할 수 있습니다.

  3. 데이터의 성격에 따른 차이: 어떤 경우에는 선택성이 낮더라도(즉, 중복되는 데이터가 많더라도) 쿼리의 성능 향상을 위해 인덱스를 생성할 수 있습니다. 이는 특정 어플리케이션, 데이터 분포 및 사용 패턴에 따라 달라집니다.

관련하여 더 많은 정보를 원하시면 다음의 링크를 참고해 주세요: 데이터베이스 성능 최적화를 위한 인덱스 설계

질문에 대한 답변이 도움되셨길 바라며, 강의에서 더 많은 인사이트를 얻으시길 바랍니다. 추가적인 의문이나 궁금한 사항이 있으시면 언제든 질문해 주세요. 곧 지식공유자께서도 도움을 드릴 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

제로콜라 함 즐길까님의 프로필 이미지
제로콜라 함 즐길까

작성한 질문수

질문하기