Vincent destaca algunos puntos importantes de las advertencias de los IOT, pero también puede obtener algunos beneficios significativos de ellos.
Personalmente, creo que están significativamente infrautilizados en Oracle y deberían considerarse mucho más ampliamente, no solo como una posible solución a los problemas de rendimiento. Como tiene que volver a crear la tabla para convertir entre IOT y el montón, este es un cambio que es poco probable que ocurra en una base de datos siempre muy activa, a menos que los problemas de rendimiento sean graves.
Martin Widlake tiene una gran serie de publicaciones sobre IOT. Hay algunos beneficios importantes que puede obtener al usarlos:
- Reduce significativamente las lecturas físicas y lógicas de IO
- Uso más eficiente de la memoria caché del búfer, que puede beneficiar el rendimiento de todo el sistema.
- Espacio ahorrado ya que solo está manteniendo un índice, no una tabla también (a menos que tenga segmentos de desbordamiento)
Sin embargo, para obtener estos beneficios, necesita tablas en las que (casi) siempre incluya las columnas iniciales de la clave principal en las consultas y es probable que obtenga varias filas a la vez. Algunos ejemplos comunes de tales tablas son:
- Detalles maestros múltiples como se encuentran a menudo en pedidos: artículos de pedido, facturas, líneas de factura, etc.
- Tablas de resolución de muchos a muchos que generalmente se consultan "unidireccional". Por ejemplo, en una
customer_addresses
tabla, es mucho más común encontrar todas las direcciones de un cliente, en lugar de todos los clientes de una dirección.
Una desventaja es que la inserción de datos es más lenta, por lo que debe sopesar los costos y beneficios. En última instancia, se trata de conocer sus datos y comprender cómo se utilizarán, lo que debería guiar la decisión.