Oracle
 sql >> база данни >  >> RDS >> Oracle

увеличената колона прави ли индекса на b-дървото в колоната небалансиран?

Oracle Индексите на никога не са "небалансирани":всеки лист в индекса е на същата дълбочина като всеки друг лист.

Нито едно разделяне на страници не въвежда ново ниво само по себе си:листната страница не става родител за нови страници, както би било при несамобалансиращо се дърво.

Вместо това се прави брат или сестра за разделената страница и новият запис (плюс евентуално някои от записите от старата страница) отиват на новата страница. Към родителската се добавя указател към новата страница.

Ако родителската страница също е свършила (не може да приеме показалеца към новосъздадената крайна страница), тя също се разделя и т.н.

Тези разделяния могат да се разпространяват до основната страница, чието разделяне е единственото нещо, което увеличава дълбочината на индекса (и го прави за всички страници наведнъж).

Индексните страници са допълнително организирани в двойно свързани списъци, всеки списък на собствено ниво. Това би било невъзможно, ако дървото беше небалансирано.

Ако master_id се увеличава автоматично, това означава, че всички разделяния се появяват в края (наричани 90/10 разделя), което прави възможно най-плътния индекс.

Не, не би, поради причините по-горе.

Ако се присъедините към slave към master често може да обмислите създаването на CLUSTER от двете таблици, индексирани от master_id . Това означава, че записите от двете таблици споделят един и същ master_id , отидете на същата или близки страници с данни, което прави свързването между тях много бързо.

Когато машината намери запис от master , с индекс или нещо друго, това също означава, че вече е намерил записите от slave да се присъедини към този master . И обратно, намиране на slave също означава намиране на неговия 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. Как да повишите производителността за групови INSERT към ODBC свързани таблици в Access?

  2. Oracle - повече заявки в един резултат

  3. Как да проектираме модел на данни, който се занимава с настоящите служители и прогнозираните служители?

  4. Как мога да сортирам по колона на таблица в различни случаи (Oracle)

  5. Параметър за изчакване на връзката за Oracle DB от python