Btree ve rtree indeksleme arasındaki fark nedir?


36

MySQLWorkbench'te, tasarımınızı geliştirmeden önce dizinlerinizi nasıl depolayacağınızı seçebileceğinizi fark ettim. Depolama türleri:

  1. B-ağacı
  2. RTree
  3. HASH

Bunu araştırırken, başımın hemen hemen üzerinde olan bazı bilgiler buldum, bu yüzden bunlar arasındaki farkın ne olduğu ve / veya neden bir başkasını seçmeniz gerektiği hakkında pratik bilgiler arıyorum.

Ayrıca, daha önce hiç depolama türü seçmedim, bu yüzden MySQL'in varsayılan bir depolama türü seçtiğini (BTREE?) Kabul ediyorum.

Yanıtlar:


51

B-ağacı

BTree (aslında B * Tree) verimli bir sipariş edilmiş anahtar / değer haritasıdır. Anlamı:

  • Anahtar verildiğinde, bir BTree endeksi hızlı bir şekilde rekor bulabilir,
  • BTree sırayla taranabilir.
  • bir aralıktaki tüm anahtarları (ve kayıtları) da almak kolaydır.

örneğin "09:00 ve 17:00 arasındaki tüm etkinlikler", "soyadı" R "ile başlayanlar

RTree

RTree, değerleri 2 veya daha fazla boyutta spatial indexhızla tanımlayabileceği anlamına gelir close. Coğrafi veritabanlarında aşağıdakiler gibi sorgular için kullanılır:

X metre içerisindeki tüm noktalar (x, y)

esrar

Hash, sıralanmamış bir anahtar / değer haritasıdır. BTree'den bile daha verimli: O(1)yerine O(log n).

Ancak herhangi bir düzen kavramı yoktur, bu nedenle sıralama işlemleri veya aralıkları getirmek için kullanılamaz.

Bir not olarak, başlangıçta, MySQL sadece MEMORYtablolardaki Hash indekslerine izin verdi ; ama bunun yıllar içinde değişip değişmediğinden emin değilim.


MySQL Rtrees'i destekliyor mu?
Pacerier

2
evet, SPATIAL INDEX ( dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html ) olarak adlandırılırlar
Javier

Harika, teşekkürler =) Bu 3 dışında başka yapılar var mı, yoksa yakın gelecekte planlanmış yapılar var mı?
Pacerier

Bellek tabloları btree endekslerini de destekliyor
Amareswar

@Amareswar, doğru. Belki de cevabım her iki yoldan da okunabilir, ancak demek istediğim HASH endekslerine yalnızca normal tablolarda değil, MEMORY tablolarında izin veriliyordu.
Javier,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.