Mysql
 sql >> Baza danych >  >> RDS >> Mysql

B-drzewo a tablica z haszem

Dostęp do elementów można uzyskać tylko za pomocą ich klucza podstawowego w tablicy mieszającej. Jest to szybsze niż w przypadku algorytmu drzewa (O(1) zamiast log(n) ), ale nie możesz wybrać zakresów (wszystko pomiędzy x i y ).Algorytmy drzewa obsługują to w Log(n) podczas gdy indeksy mieszające mogą skutkować pełnym skanowaniem tabeli O(n) .Również stałe obciążenie indeksów mieszających jest zwykle większe (co nie ma znaczenia w notacji theta, ale nadal istnieje ). Również algorytmy drzewa są zwykle łatwiejsze w utrzymaniu, rosną wraz z danymi, skalowaniem itp.

Indeksy skrótów działają ze wstępnie zdefiniowanymi rozmiarami skrótów, więc w efekcie otrzymujesz kilka „zasobników”, w których przechowywane są obiekty. Obiekty te są ponownie zapętlone, aby naprawdę znaleźć właściwy wewnątrz tej partycji.

Więc jeśli masz małe rozmiary, masz dużo narzutu na małe elementy, duże rozmiary powodują dalsze skanowanie.

Dzisiejsze algorytmy tablic mieszających zwykle skalują się, ale skalowanie może być nieefektywne.

Może jednak zaistnieć punkt, w którym Twój indeks przekroczy dopuszczalny rozmiar w porównaniu z rozmiarami skrótu, a cały indeks musi zostać odbudowany. Zwykle nie stanowi to problemu, ale w przypadku ogromnych, ogromnych baz danych może to zająć kilka dni.

Kompromis dla algorytmów drzewa jest niewielki i są one odpowiednie dla prawie każdego przypadku użycia, a zatem są domyślne.

Jeśli jednak masz bardzo precyzyjny przypadek użycia i wiesz dokładnie, co i tylko co będzie potrzebne, możesz skorzystać z indeksów mieszających.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaka jest różnica między mysql.createConnection i mysql.createPool w module Node.js MySQL?

  2. BŁĄD 1054 (42S22):Nieznana kolumna „‍‍” w „liście pól”

  3. Jaki jest kanoniczny sposób pobrania rekordu z bazy danych MySQL, który ma najmniejsze/największe pole?

  4. Czy możliwe jest zapytanie tabeli struktury drzewa w MySQL w jednym zapytaniu, na dowolną głębokość?

  5. Jak najpierw użyć kodu MySql i Entity Framework 4.1?