Daniel의 “개발자가 다양한 테이블에 여러 개의 새로운 인덱스를 넣고 4.5 시간 배치 파일을 45 분으로 가져 왔다”와 같은 이야기를 읽은 후 인덱스 엔지니어링의 실제 사례를 보는 것은 굉장할 것입니다. 클러스터링은 데이터 블록을 인덱스와 일치하도록 특정 고유 순서로 변경하여 행 데이터가 순서대로 저장됩니다. 따라서 지정된 데이터베이스 테이블에서 클러스터된 인덱스를 하나만 만들 수 있습니다. 클러스터된 인덱스는 전체 검색 속도를 크게 높일 수 있지만 일반적으로 클러스터된 인덱스의 동일 또는 역순으로 데이터에 순차적으로 액세스하거나 항목 범위를 선택한 경우에만 가능합니다. 이 경우 데이터는 검색 키에 따라 정렬됩니다. 그것은 순차적 파일 구성을 유도합니다. 이 경우 데이터베이스 테이블의 기본 키가 인덱스를 만드는 데 사용됩니다. 기본 키는 고유하며 정렬된 방식으로 저장되기 때문에 검색 작업의 성능이 매우 효율적입니다. 기본 인덱스는 두 가지 유형으로 분류됩니다: 조밀한 인덱스와 희소 한 인덱스. ? 데이터베이스에서 이름(검색 키)에 따라 정렬된 클러스터된 인덱스를 페이지 번호를 엔터티가 있는 디스크의 주소로 데이터베이스를 지시하는 포인터라고 합니다. 동일한 독일 셰퍼드 비유를 사용하여 0x77129가 독일 셰퍼드의 행 데이터가 저장되는 디스크의 주소인 “독일 셰퍼드”, 0x77129)와 같은 것을 가질 수 있습니다.

또한 클러스터된 인덱스와 클러스터되지 않은 인덱스 간의 차별화가 오히려 중요합니다. B-트리가 인덱스에 가장 많이 있는 데이터 구조인 이유는 조회, 삭제 및 삽입이 모두 로그 시간에서 수행될 수 있기 때문에 시간 효율적이기 때문입니다. 그리고, B-트리가 더 일반적으로 사용되는 또 다른 주된 이유는 B-트리 내에 저장되는 데이터를 정렬할 수 있기 때문이다. RDBMS는 일반적으로 인덱스에 실제로 사용되는 데이터 구조를 결정합니다. 그러나 특정 RDBMS의 일부 시나리오에서는 인덱스 자체를 만들 때 데이터베이스에서 사용할 데이터 구조를 실제로 지정할 수 있습니다. 인덱스 레코드에 인덱싱된 필드와 원래 레코드에 대한 포인터만 포함되어 있다는 점을 감안할 때 인덱스 레코드가 가리키는 다중 필드 레코드보다 작을 수 있습니다. 따라서 인덱스 자체는 원래 테이블보다 적은 디스크 블록을 필요로 하므로 반복하기 위해 더 적은 블록 액세스가 필요합니다. firstName 필드의 인덱스스키마는 아래에 설명되어 있습니다. 데이터베이스가 사용자 사용자인 경우 디자이너가 인덱스를 생각하지 않도록 신뢰하지 마십시오. 당신은 단지 바람에 매달려 다른 쿼리를 떠나, 그 기본 키를 만든 것을 놀라게 🙂 특정 시나리오에서는 힙이 인덱스가있는 테이블보다 더 유용합니다. 당신이 괴롭히는 찾을 다른 주제가있는 경우, 저에게 알려주세요.

나는 다른 기사를 쓸 수 있습니다. 아주 잘 설명했다. 난 그냥 멀티 키 인덱스에 대해 궁금해. B+ 트리를 유지 관리하는 방법. mongodb에서 몇 가지 다중 키 인덱스를 시도중이었기 때문에 멀티 키 인덱스에 대해 자세히 설명 해 주십시오. 감사합니다 🙂 인덱스는 레코드 내에서 일치하는 필드를 검색하는 데만 사용되므로 출력에만 사용되는 인덱싱 필드가 단순히 삽입 또는 삭제 작업을 수행할 때 디스크 공간 및 처리 시간을 낭비하는 것으로 추론됩니다. 따라서 피해야 합니다. 또한 이진 검색의 특성을 감안할 때 데이터의 카디널리티 또는 고유성이 중요합니다. 카디널리티가 2인 필드에서 인덱싱하면 데이터가 절반으로 분할되고 카디널리티 1,000은 약 1,000개의 레코드를 반환합니다. 이러한 낮은 카디널리티로 는 효과가 선형 정렬로 감소되고, 카디널리티가 레코드 수의 30% 미만인 경우 쿼리 최적화 프로그램은 인덱스를 사용하지 않아 인덱스를 효과적으로 공간 낭비로 만듭니다.