[SQL] 어떻게 복합 인덱스의 일을?
SQL어떻게 복합 인덱스의 일을?
나는 그들이 어떻게 작동하는지의 가정에 전에 테이블에 복합 인덱스 (당신을위한 인덱스 수학 민속를) 만들었습니다. 내 가정이 정확인지 아닌지 난 그냥 궁금 해서요.
난 당신이 인덱스 컬럼의 순서를 나열 할 때, 당신은 또한 인덱스가 그룹화되는 방법을 지정하는 것으로 가정합니다. ASC, B ASC, 및 C ASC 당신이 A, B, C의 열을 가지고 있고, 그 같은 순서로 인덱스를 지정하는 경우 예를 들어, 다음 결과 지수는 본질적으로 각 "그룹"에 대한 많은 인덱스 될 것입니다.
이 올바른지? 그렇지 않다면, 어떤 결과 지수는 실제로 모양을?
해결법
-
==============================
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.복합 인덱스는 일반 알파벳 사전에 인덱스하지만,이 같은 두 개 이상의 문자를 포함하는 것과 같다 :
복합 인덱스는 일반 알파벳 사전에 인덱스하지만,이 같은 두 개 이상의 문자를 포함하는 것과 같다 :
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.인덱스의 가장 일반적인 구현은 다소 빠른 조회, 또한 합리적으로 빠른 범위 스캔을 할 수 있도록 B-나무를 사용합니다. 그것은 여기에 설명하기 위해 너무 많은,하지만 여기에 B-나무에 위키 백과 문서입니다. 그리고 당신이 바로, 당신은 인덱스 작성에 선언 첫 번째 열은 결과 B-트리에서 상위 열 수 있습니다.
인덱스의 가장 일반적인 구현은 다소 빠른 조회, 또한 합리적으로 빠른 범위 스캔을 할 수 있도록 B-나무를 사용합니다. 그것은 여기에 설명하기 위해 너무 많은,하지만 여기에 B-나무에 위키 백과 문서입니다. 그리고 당신이 바로, 당신은 인덱스 작성에 선언 첫 번째 열은 결과 B-트리에서 상위 열 수 있습니다.
고차 열에 대한 검색은 다양한 스캔 금액 및 B 트리 인덱스는 이러한 검색에 매우 유용 할 수있다. 이 볼 수있는 가장 쉬운 방법은 아직 온라인 카탈로그에로 전환하지 않은 도서관에서 당신이 가지고있는 기존 카드 카탈로그와 유사한 것입니다.
당신은 모든 성 "클레멘스"입니다 저자의 카드를 찾고 있다면, 당신은 단지 저자 카탈로그로 이동, 매우 빠르게 "CLE- CLI가"전면에 말한다 서랍을 찾을 수 있습니다. 즉, 바로 서랍입니다. 지금 당신은 신속하게에 "클레멘스, 로저"또는 "클레멘스, 사무엘"라고 모든 카드를 찾기 위해 그 서랍에 비공식적 인 이진 검색의 종류를 않습니다.
하지만 이름 "사무엘"인 저자의 모든 카드를 찾으려면 가정합니다. 그 카드는 저자 카탈로그에 한 곳에 모여 있지 않기 때문에 지금 당신은, 개울까지입니다. 유사한 현상은 데이터베이스에 복합 인덱스로 발생합니다.
다른 DBMS의 자신의 최적화 인덱스 범위 스캔을 감지하고 정확하게 자신의 비용을 추정에 얼마나 영리 다르다. 그리고 모든 인덱스는 B-나무입니다. 특정 실제 정보를 얻기 위해 DBMS에 대한 당신은 문서를 읽을해야합니다.
-
==============================
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.그들은 다중 값 키를 제외하고 나의 이해는, 복합 인덱스, 그냥 일반 인덱스처럼 작동한다. 당신은 필드 (A, B, C)에 인덱스를 정의 할 경우 종합 지수는 따라서 BinaryTree에 저장되기 때문에, 색인은 검색의 조합을 다음 작동합니다.
그들은 다중 값 키를 제외하고 나의 이해는, 복합 인덱스, 그냥 일반 인덱스처럼 작동한다. 당신은 필드 (A, B, C)에 인덱스를 정의 할 경우 종합 지수는 따라서 BinaryTree에 저장되기 때문에, 색인은 검색의 조합을 다음 작동합니다.
ABC AB A
A에 대한 복합 지표를 만드는 예를 들면, B 및 C 영역은, AB, 및 ABC 별도의 인덱스를 만드는 것과 같다.
from https://stackoverflow.com/questions/795031/how-do-composite-indexes-work by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 소프트 삭제를 구현하는 가장 좋은 방법은 무엇입니까? (0) | 2020.06.01 |
---|---|
[SQL] SQL Server 2005를 - 내보내기 테이블 프로그래밍 (를 재건하기 위해 .SQL 파일을 실행) (0) | 2020.06.01 |
[SQL] CodeIgniter의 모델에서 SQL 문을 인쇄하는 방법 (0) | 2020.06.01 |
[SQL] SQL에서 병합 기능 (0) | 2020.06.01 |
[SQL] 다른 하나의 반경에있는 좌표를 결정 (0) | 2020.06.01 |