de Martin LE TARNEC.

Update


Un comando update debe recolocar las entradas del índice modificado para mantener el orden del índice. Para eso, la base de datos ha de eliminar la entrada antigua y agregar la nueva en su nueva ubicación. El tiempo de respuesta es casi el mismo que para un delete y un insert juntos.

El rendimiento de update, tal como un insert y un delete, depende también del número de índices sobre la tabla. La única diferencia es que el comando update no afecta necesariamente a todas las columnas porque por lo general sólo se modifican unas pocas columnas seleccionadas. En consecuencia, un comando update no afecta necesariamente a todos los índices de la tabla, sino solamente a los que contienen las columnas modificadas.

La Figura 8.3 muestra el tiempo de respuesta para dos comandos update: uno que modifica todas las columnas y afecta a todos los índices, y después, un segundo que modifica una sola columna afectando solamente a un índice.

Figura 8.3 Rendimiento del Update por número de índices y de columnas

Update sobre todas las columnas muestra el mismo modelo que ya se ha observado en la seccion anterior: el tiempo de respuesta crece con cada índice adicional. El tiempo de respuesta del update que afecta solamente a un índice no se incrementa mucho porque deja la mayoría de los índices sin cambios.

Para optimizar el rendimiento de update, se deben analizar solamente de las columnas que han sido modificadas por el UPDATE. Eso es lógico si se escribe manualmente el comando update. Sin embargo, las herramientas ORM pueden generar comandos update que actualizan siempre todas las columnas. Por ejemplo, Hibernate hace eso cuando se deshabilita el modo de UPDATE dinámico (del inglés, dynamic-update). Desde la versión 4.0, este modo se habilita por defecto.

Cuando se usan las herramientas ORM, es una buena práctica habilitar de vez en cuando el registro de sentencias (del inglés, SQL logging) en el entorno de desarrollo para validar las sentencias SQL generadas. La recomendación titulada Habilitar el registro SQL contiene un pequeño resumen de cómo habilitar el registro en algunas de las herramientas ORM más usadas.

Si te gusta mi manera de explicar, te encantará mi libro.

Piénsalo

¿Habrá algún caso en el que los comandos insert o delete no afecten a todos los índices de una tabla?

Acerca del autor

Foto de Markus Winand

Markus Winand enseña eficientemente SQL, en casa y online. Minimiza el tiempo de desarrollo utilizando moderno SQL y optimiza el tiempo de ejecución con indexación inteligente. Para ello también ha publicado el libro SQL Performance Explained.

“Use The Index, Luke” de Markus Winand se halla bajo licencia Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Aspectos legales | Contacto | SIN GARANTÍA | Marcas | Privacy | CC-BY-NC-ND 3.0 licencia