database - examples - ¿Cuándo debería usar la Tabla Organizada por Índice de Oracle? O, cuando no debería?
select index oracle (8)
Las tablas organizadas por índice (IOT) son tablas almacenadas en una estructura de índice. Mientras que una tabla almacenada en un montón no está organizada, los datos en un IOT se almacenan y se ordenan por clave principal (los datos son el índice). Los IOT se comportan igual que las tablas "normales", y usted usa el mismo SQL para acceder a ellos.
Se supone que cada tabla en una base de datos relacional apropiada tiene una clave primaria ... Si cada tabla de mi base de datos tiene una clave principal, ¿ debería usar siempre una tabla organizada por índice?
Supongo que la respuesta es no, entonces, ¿cuándo una tabla organizada por índice no es la mejor opción?
Básicamente, una tabla organizada por índice es un índice sin una tabla. Entonces, si tiene una tabla cuyas columnas consisten en la clave principal y como máximo en otra columna, entonces tiene un posible candidato para ÍNDICE ORGANIZADO.
Pero si te encuentras contemplando la necesidad de índices adicionales en las columnas de clave no primaria, entonces probablemente estés mejor con una tabla de pila normal. Entonces, como la mayoría de las tablas probablemente necesiten índices adicionales, la mayoría de las tablas no son adecuadas para IOT.
En la práctica, es más probable que las tablas con índice organizado sean datos de referencia, asuntos de búsqueda de código. Las tablas de aplicaciones casi siempre están organizadas en montón.
Considero que los siguientes tipos de tablas son excelentes candidatos para IOT:
- Tablas de tipo "pequeño" "búsqueda" (p. ej. consultas frecuentes, actualizadas con poca frecuencia, se ajustan en un número relativamente pequeño de bloques)
- cualquier tabla que ya tenga un índice que cubra todas las columnas de todos modos (es decir, también puede guardar el espacio utilizado por la tabla si el índice duplica el 100% de los datos)
De la guía Concepts Oracle:
Las tablas organizadas por índice son útiles cuando las piezas de datos relacionadas deben almacenarse juntas o los datos deben almacenarse físicamente en un orden específico. Este tipo de tabla se utiliza a menudo para la recuperación de información, espacial (ver "Vista general de Oracle Spatial") y aplicaciones OLAP (ver "OLAP").
Esta question de AskTom también puede ser de interés, especialmente cuando alguien da un escenario y luego pregunta si un IOT se desempeña mejor que una mesa organizada en montón, la respuesta de Tom es:
podemos formular hipótesis durante todo el día, pero hasta que lo midas, nunca lo sabrás con certeza.
Los consideraría para tablas muy estrechas (como las tablas de unión utilizadas para resolver tablas de muchos a muchos). Si (virtualmente) todas las columnas de la tabla van a estar en un índice de todos modos, entonces ¿por qué no debería haber usado un IOT?
Las tablas pequeñas pueden ser buenas candidatas para IOT tal como lo discutió Richard Foote here
No puedo comentar per se los IOT, sin embargo, si estoy leyendo esto bien, entonces son lo mismo que un ''índice agrupado'' en SQL Server. Por lo general, debe pensar en no usar dicho índice si su clave principal (o los valores que está indexando si no es una clave primaria) probablemente se distribuyan de forma aleatoria, ya que estos insertos pueden provocar muchas divisiones de página ( costoso).
Índices tales como columnas de identidad (¿secuencias en Oracle?) Y fechas "alrededor de la fecha actual" tienden a ser buenos candidatos para tales índices.
Todo lo que IOT realmente guarda es la (s) lectura (s) lógica (s) en el segmento de la tabla, y como podría haber gastado dos o tres o más en IOT / index, esto no siempre es un gran ahorro, excepto para pequeños conjuntos de datos.
Otra característica a considerar para acelerar las búsquedas, particularmente en tablas más grandes, es un cluster de hash de tabla única. Cuando se crean correctamente, son más eficientes para grandes conjuntos de datos que IOT porque requieren solo una lectura lógica para encontrar los datos, mientras que un IOT sigue siendo un índice que necesita múltiples e / s lógicas para localizar el nodo hoja.
Una tabla organizada por índice generalmente es una buena opción si solo accede a los datos de esa tabla mediante la clave, la clave completa y nada más que la clave.
Además, hay muchas limitaciones sobre qué otras características de la base de datos pueden y no pueden usarse con las tablas organizadas por índice. Recuerdo que en al menos una versión no se podían usar bases de datos lógicas en espera con tablas organizadas por índices. Una tabla organizada por índice no es una buena opción si le impide usar otras funciones.
Una tabla organizada por índice, a diferencia de una tabla ordinaria, tiene su propia forma de estructurar, almacenar e indexar datos.
Las tablas organizadas por índice (IOT) son índices que en realidad contienen los datos que se indexan, a diferencia de los índices que están almacenados en otro lugar y tienen enlaces a datos reales.