복붙노트

[SQL] 어떻게 복합 인덱스의 일을?

SQL

어떻게 복합 인덱스의 일을?

나는 그들이 어떻게 작동하는지의 가정에 전에 테이블에 복합 인덱스 (당신을위한 인덱스 수학 민속를) 만들었습니다. 내 가정이 정확인지 아닌지 난 그냥 궁금 해서요.

난 당신이 인덱스 컬럼의 순서를 나열 할 때, 당신은 또한 인덱스가 그룹화되는 방법을 지정하는 것으로 가정합니다. ASC, B ASC, 및 C ASC 당신이 A, B, C의 열을 가지고 있고, 그 같은 순서로 인덱스를 지정하는 경우 예를 들어, 다음 결과 지수는 본질적으로 각 "그룹"에 대한 많은 인덱스 될 것입니다.

이 올바른지? 그렇지 않다면, 어떤 결과 지수는 실제로 모양을?

해결법

  1. ==============================

    1.그들은 다중 값 키가 제외 복합 인덱스, 그냥 일반 인덱스처럼 작동합니다.

    그들은 다중 값 키가 제외 복합 인덱스, 그냥 일반 인덱스처럼 작동합니다.

    당신은 필드 (A, B, C)에 인덱스를 정의하면, 기록이에 첫번째 분류되어, 다음, 다음, C ㄴ.

    예:

    | A | B | C |
    -------------
    | 1 | 2 | 3 |
    | 1 | 4 | 2 |
    | 1 | 4 | 4 |
    | 2 | 3 | 5 |
    | 2 | 4 | 4 |
    | 2 | 4 | 5 |
    
  2. ==============================

    2.복합 인덱스는 일반 알파벳 사전에 인덱스하지만,이 같은 두 개 이상의 문자를 포함하는 것과 같다 :

    복합 인덱스는 일반 알파벳 사전에 인덱스하지만,이 같은 두 개 이상의 문자를 포함하는 것과 같다 :

    AA - page 1
    AB - page 12
    

    기타

    테이블 행 번째 등에 의해 그리고, 인덱스의 첫번째 열에 의해 먼저 정렬

    당신이 모두 열로 또는 첫 번째 열에서 검색 할 때 사용할 수 있습니다. 색인은 다음과 같은 경우 :

    AA - page 1
    AB - page 12
    …
    AZ - page 245
    BA - page 246
    …
    

    당신은 (테이블에 = 2 열)이 편지에서 검색을 위해 사용하거나, 하나 개의 문자에 일반 인덱스와 같은 수 있습니다 :

    A - page 1
    B - page 246
    …
    

    사전의 경우, 페이지 스스로가이 알파벳 순으로 정렬합니다. 즉 클러스터 된 인덱스의 예입니다.

    일반 비 클러스터형 인덱스에서 페이지에 대한 참조는 역사 책에서처럼 정렬 :

    Gaul, Alesia: pages 12, 56, 78
    Gaul, Augustodonum Aeduorum: page 145
    …
    Gaul, Vellaunodunum: page 24
    Egypt, Alexandria: pages 56, 194, 213, 234, 267
    

    두 개 이상의 열에 의해 주문시 복합 인덱스도 사용할 수있다. 이 경우에는 DESC 절을 편리하게 올 수 있습니다.

    복합 인덱스에 DESC 절을 사용하는 방법에 대한 내 블로그에서이 문서를 참조하십시오 :

  3. ==============================

    3.인덱스의 가장 일반적인 구현은 다소 빠른 조회, 또한 합리적으로 빠른 범위 스캔을 할 수 있도록 B-나무를 사용합니다. 그것은 여기에 설명하기 위해 너무 많은,하지만 여기에 B-나무에 위키 백과 문서입니다. 그리고 당신이 바로, 당신은 인덱스 작성에 선언 첫 번째 열은 결과 B-트리에서 상위 열 수 있습니다.

    인덱스의 가장 일반적인 구현은 다소 빠른 조회, 또한 합리적으로 빠른 범위 스캔을 할 수 있도록 B-나무를 사용합니다. 그것은 여기에 설명하기 위해 너무 많은,하지만 여기에 B-나무에 위키 백과 문서입니다. 그리고 당신이 바로, 당신은 인덱스 작성에 선언 첫 번째 열은 결과 B-트리에서 상위 열 수 있습니다.

    고차 열에 대한 검색은 다양한 스캔 금액 및 B 트리 인덱스는 이러한 검색에 매우 유용 할 수있다. 이 볼 수있는 가장 쉬운 방법은 아직 온라인 카탈로그에로 전환하지 않은 도서관에서 당신이 가지고있는 기존 카드 카탈로그와 유사한 것입니다.

    당신은 모든 성 "클레멘스"입니다 저자의 카드를 찾고 있다면, 당신은 단지 저자 카탈로그로 이동, 매우 빠르게 "CLE- CLI가"전면에 말한다 서랍을 찾을 수 있습니다. 즉, 바로 서랍입니다. 지금 당신은 신속하게에 "클레멘스, 로저"또는 "클레멘스, 사무엘"라고 모든 카드를 찾기 위해 그 서랍에 비공식적 인 이진 검색의 종류를 않습니다.

    하지만 이름 "사무엘"인 저자의 모든 카드를 찾으려면 가정합니다. 그 카드는 저자 카탈로그에 한 곳에 모여 있지 않기 때문에 지금 당신은, 개울까지입니다. 유사한 현상은 데이터베이스에 복합 인덱스로 발생합니다.

    다른 DBMS의 자신의 최적화 인덱스 범위 스캔을 감지하고 정확하게 자신의 비용을 추정에 얼마나 영리 다르다. 그리고 모든 인덱스는 B-나무입니다. 특정 실제 정보를 얻기 위해 DBMS에 대한 당신은 문서를 읽을해야합니다.

  4. ==============================

    4.번호 결과 지수는 단일 인덱스 그러나 복합 키가 될 것입니다.

    번호 결과 지수는 단일 인덱스 그러나 복합 키가 될 것입니다.

    키 = A, B, C, D; 키 = 1, 2, 3, 4;

    A1, A2, A3, B1, B3, C3, C4, D2 : 인덱스 KeyX는 KeyY 실제로 것

    그래서 경우에 당신이 키 및 키에 의해 뭔가 찾을 필요가 - 빠른되며 단일 인덱스를 사용합니다. SELECT ... 키 = "B"와 KeyY = 3 같은 뭔가.

    WHERE 키 =을 :하지만 이해하는 것이 중요합니다? 키 = WHERE 동안 요청은 해당 인덱스를 사용할 것인가? 모든 그러한 인덱스를 사용하지 않습니다.

  5. ==============================

    5.그들은 다중 값 키를 제외하고 나의 이해는, 복합 인덱스, 그냥 일반 인덱스처럼 작동한다. 당신은 필드 (A, B, C)에 인덱스를 정의 할 경우 종합 지수는 따라서 BinaryTree에 저장되기 때문에, 색인은 검색의 조합을 다음 작동합니다.

    그들은 다중 값 키를 제외하고 나의 이해는, 복합 인덱스, 그냥 일반 인덱스처럼 작동한다. 당신은 필드 (A, B, C)에 인덱스를 정의 할 경우 종합 지수는 따라서 BinaryTree에 저장되기 때문에, 색인은 검색의 조합을 다음 작동합니다.

    ABC
    AB
    A
    

    A에 대한 복합 지표를 만드는 예를 들면, B 및 C 영역은, AB, 및 ABC 별도의 인덱스를 만드는 것과 같다.

  6. from https://stackoverflow.com/questions/795031/how-do-composite-indexes-work by cc-by-sa and MIT license