Oracle
 sql >> Baza danych >  >> RDS >> Oracle

czy kolumna incremented powoduje, że indeks b-drzewa w kolumnie jest niezrównoważony?

Oracle indeksy nigdy nie są „niezrównoważone”:każdy liść w indeksie jest na tej samej głębokości, co każdy inny liść.

Brak podziału strony sam w sobie nie wprowadza nowego poziomu:strona liścia nie staje się rodzicem dla nowych stron, tak jak byłaby na drzewie niesamowyrównującym się.

Zamiast tego tworzone jest rodzeństwo dla podzielonej strony, a nowy rekord (plus ewentualnie niektóre rekordy ze starej strony) trafiają na nową stronę. Wskaźnik do nowej strony zostanie dodany do rodzica.

Jeśli strona nadrzędna również nie ma miejsca (nie może zaakceptować wskaźnika do nowo utworzonej strony liścia), również zostanie podzielona i tak dalej.

Te podziały mogą rozprzestrzeniać się aż do strony głównej, której podział jest jedyną rzeczą, która zwiększa głębokość indeksu (i robi to dla wszystkich stron jednocześnie).

Strony indeksu są dodatkowo zorganizowane w podwójnie połączone listy, każda lista na swoim własnym poziomie. Byłoby to niemożliwe, gdyby drzewo było niezrównoważone.

Jeśli master_id jest automatycznie zwiększana, oznacza to, że wszystkie podziały występują na końcu (tak zwane 90/10 dzieli), co zapewnia możliwie najgęstszy indeks.

Nie, nie będzie, z powyższych powodów.

Jeśli dołączysz do slave do master często możesz rozważyć utworzenie CLUSTER z dwóch tabel, zindeksowanych przez master_id . Oznacza to, że rekordy z obu tabel mają ten sam master_id , przejdź do tych samych lub pobliskich stron danych, dzięki czemu łączenie się między nimi jest bardzo szybkie.

Gdy silnik znalazł rekord od master , z indeksem lub czymkolwiek innym, oznacza to również, że znalazł już rekordy z slave być połączonym z tym master . I odwrotnie, lokalizując slave oznacza również zlokalizowanie jego master .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:jaki jest format ciągu połączenia instantclient?

  2. Oracle SQL:zapytanie SQL generujące 4 razy więcej wyników, a dane nie zostaną poprawnie uporządkowane

  3. MERGE tabeli, nie rób nic po dopasowaniu

  4. Jak wyświetlić rekordy z tabeli uporządkowanej jak w klauzuli where?

  5. Błąd Oracle .Net ManagedDataAccess:nie można załadować typu „OracleInternal.Common.ConfigBaseClass” z zestawu