btree와 rtree 인덱싱의 차이점은 무엇입니까?


36

MySQLWorkbench에서 디자인을 엔지니어링하기 전에 인덱스를 저장하는 방법을 선택할 수 있음을 알았습니다. 저장 유형은 다음과 같습니다.

  1. BTREE
  2. RTREE
  3. 해시시

이것을 조사하면서, 나는 거의 머리 위에있는 정보를 찾았으므로, 차이점이 무엇인지 그리고 / 또는 왜 서로 선택해야하는지에 대한 실용적인 정보를 찾고 있습니다.

또한 이전에는 스토리지 유형을 선택하지 않았으므로 MySQL이 기본 스토리지 유형 (BTREE?)을 선택한다고 가정합니다.

답변:


51

BTree

BTree (실제로 B * Tree)는 효율적으로 정렬 된 키-값 맵입니다. 의미:

  • 키가 주어지면 BTree 인덱스는 레코드를 빠르게 찾을 수 있습니다.
  • BTree를 순서대로 스캔 할 수 있습니다.
  • 또한 범위 내에서 모든 키 (및 레코드)를 쉽게 가져올 수 있습니다.

예 : "오전 9시와 오후 5시 사이의 모든 이벤트", " 'R'로 시작하는 성"

RTree

RTree는 2 차원 이상의 값을 spatial index빠르게 식별 할 수 있음을 의미 close합니다. 지리적 데이터베이스에서 다음과 같은 쿼리에 사용됩니다.

(x, y)에서 X 미터 내의 모든 포인트

해시시

해시는 정렬되지 않은 키-값 맵입니다. O(1)대신 BTree보다 훨씬 효율적 입니다 O(log n).

그러나 순서 개념이 없으므로 정렬 작업이나 범위를 가져 오는 데 사용할 수 없습니다.

부수적으로 원래 MySQL은 MEMORY테이블에서 해시 인덱스 만 허용했습니다 . 그러나 그것이 몇 년 동안 바뀌 었는지 확실하지 않습니다.


MySQL은 Rtree를 지원합니까?
Pacerier


Cool, thanks =)이 3 가지 외에 다른 구조가 있거나 가까운 시일 내에 계획된 구조가 있습니까?
Pacerier

메모리 테이블도 btree 인덱스를 지원합니다
Amareswar

@Amareswar입니다. 어쩌면 내 대답은 두 가지 방법으로 읽을 수 있지만 HASH 인덱스는 '정상'테이블이 아닌 MEMORY 테이블에서만 허용된다는 것을 의미했습니다.
Javier
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.