태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

[퀴즈] 인덱스를 만들 때 고려할 3대 요소는 - 해답편

오라클 2010.07.12 09:45
퀴즈 재미 붙였습니다. :)

이 문제는 제가 만든 것이 아니고 인덱스에 관한 최고의 저서 중 하나에 기록되어 있는 것입니다. 오늘 마침 인덱스에 관한 작업을 처리하다가 이 문제가 생각났습니다.

문제: 테이블에 인덱스를 만들려고 합니다. 어떤 컬럼에 대해 인덱스를 만들어야 할지를 결정할 때 사용할 수 있는 3대 기준이 있습니다. 이 세 가지 기준은 무엇일까요?

이미 답을 알고 계신 분들도 많을 것이고, 이 문제를 진지하게 고민해 본 분이라면 나름대로의 답을 이미 가지고 있는 분들도 있을 것 같습니다.

관심 있으신 분들은 심심풀이로 한번씩 달아보시면 좋겠습니다. 역시 답변이 안달리면 자삭하겠습니다. :)


퀴즈에 대한 답입니다. 원래의 정답은 아래와 같습니다.
  1. 랜덤 액세스의 비용이 테이블 Full Scan보다 비용이 저렴한가? - 선택도의 문제
  2. 테이블로 아예 가지 않도록 할 필요가 있느가? - Table lookup by ROWID의 성능 문제
  3. 정렬을 대신할 수 있는가? - Order By 성능 문제
그 외에 다양한 답들이 존재하겠지만 위의 세 가지가 가장 기본적인 고려 요소로 거론됩니다. Index Range Scan 만이 고려 대상이 되고 있죠? 그래서 가장 기본적이라는 것입니다. 다른 스캔 방식(Skip Scan, Fast Full Scan 등등)을 고려하면 답변이 훨씬 다양해지겠습니다.

인데스를 구성하는 컬럼을 고려할 때 DML은 일단 고려 대상이 아닙니다. DML의 성능에 대한 고려는 SELECT에 대한 고려와 검증이 끝난 후 별도의 튜닝 과정에서 필요하며, 이 경우에도 인덱스를 구성하는 컬럼을 변경하는 경우는 거의 없습니다.(또는 없어야 합니다)

PS) 제가 오라클 관련 이야기를 좀 더 공개적으로 해볼까 해서 트윗을 시작했는데 막상 들어가보니 오라클 관련 이야기를 할 공간이 없더군요. 트윗에서 오라클 관련 이야기를 주고 받을 수 있는 좋은 방법이나 아이디어 있으신 분 있나요? 트윗에서까지 오라클 이야기하는 것은 무리인 것 같기도 하고... 쿨럭

저작자 표시
신고
Trackback 0 : Comments 7
  1. 2010.07.02 23:43 Modify/Delete Reply

    비밀댓글입니다

  2. 2010.07.03 23:07 신고 Modify/Delete Reply

    대용량데이터베이스 솔루션에 몇가지가 나오는데요..설마 그건가요?
    1. 항상 사용하는가?
    2. =로 사용하는가?
    3. 분포도는 좋은가?
    기타:sort를 대체해서 사용할 수 있는가 등등....

    • 욱짜 2010.07.04 00:57 신고 Modify/Delete

      인덱스에 대해 다루는 책이라면 비슷한 이야기를 할 겁니다. 그 책은 아니지만 상당 부분 일치합니다. 그만큼 가장 기본적인 퀴즈라고 할 수 있겠네요.

      아주 많은 답의 조합이 가능하기도 할 거구요.

      지금 아르헨티나가 독일에 4:0으로 졌습니다. ㅎㅎ

  3. 새벽 2010.07.06 18:41 신고 Modify/Delete Reply

    인덱스 잡을때 개인적으로 고려하는 사항들입니다.
    물론 정답에서 많이 비껴날 수 있겠구요.. ^^;

    1.조건절에서 10% 이하의 검색범위로 빈번히 사용되는 컬럼
    2.1을 만족하면서 카디널러티가 좋은 컬럼 (동일한 값이 거의 없으면 Good!)
    3.1을 만족하면서 사이즈가 적은 컬럼
    4.1과 2를 만족하면서 Nullable인 컬럼도 개인적으로는 좋아합니다만 이건 별로인지 잘 모르겠네요..

    적고보니 위에 적으신 분 내용이랑 비슷하네요..

    내일부터는 4강전이 시작됩니다. ㅎㅎ

  4. rcho 2010.07.13 10:21 신고 Modify/Delete Reply

    인덱스에 대한 생각을 정리해볼 좋은 기회였습니다. 감사합니다.
    저희 회사분들중에도 정보공유를 위해 트윗을 해보시는 분들이 꽤 계시던데, 아직까지 성공적이진 않은것같습니다.
    우선 조동욱님의 트윗 아이디를 공유하시는게 첫 걸음이지않을까 싶습니다만...
    즐거운 마음으로 follow하겠습니다!

Write a comment

티스토리 툴바