Oracle
Los índices de nunca están "desequilibrados":cada hoja en el índice está a la misma profundidad que cualquier otra hoja.
Ninguna división de página introduce un nuevo nivel por sí mismo:una página de hoja no se convierte en padre para nuevas páginas como lo sería en un árbol que no se equilibra automáticamente.
En su lugar, se crea un hermano para la página dividida y el nuevo registro (más posiblemente algunos de los registros de la página anterior) van a la nueva página. Se agrega un puntero a la nueva página al padre.
Si la página principal tampoco tiene espacio (no puede aceptar el puntero a la página hoja recién creada), también se divide, y así sucesivamente.
Estas divisiones pueden propagarse hasta la página raíz, cuya división es lo único que aumenta la profundidad del índice (y lo hace para todas las páginas a la vez).
Las páginas de índice también se organizan en listas de doble enlace, cada lista en su propio nivel. Esto sería imposible si el árbol estuviera desequilibrado.
Si master_id
se incrementa automáticamente, esto significa que todas las divisiones se producen al final (por ejemplo, 90/10
splits) que hace posible el índice más denso.
No, no lo haría, por las razones anteriores.
Si te unes a slave
a master
a menudo, puede considerar crear un CLUSTER
de las dos tablas, indexadas por master_id
. Esto significa que los registros de ambas tablas, compartiendo el mismo master_id
, vaya a las mismas páginas de datos o a una cercana, lo que hace que una unión entre ellas sea muy rápida.
Cuando el motor encontró un registro de master
, con un índice o lo que sea, esto también significa que ya ha encontrado los registros de slave
para unirse con ese master
. Y viceversa, localizando un slave
también significa localizar su master
.