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

0.000.050.100.150.20123450.000.050.100.150.20Número de ÍndiceTiempo de ejecución [sec]Tiempo de ejecución [sec] todas las columnas todas las columnas una columna una columna

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?

Previous pageNext page

You can’t learn everything in one day. Subscribe the newsletter via E-Mail, Bluesky or RSS to gradually catch up. Have a look at modern-⁠sql.com as well.

Acerca del autor

Foto de Markus Winand

Markus Winand es defensor del resurgimiento del SQL. Su misión es la de presentar a los desarrolladores la evolución de SQL en el siglo XXI. Es posible contratar a Markus según disponibilidad o como orador o consultor en winand.at.

Adquiere tu libro

Portada de “Rendimiento SQL explicado”: Ardilla corriendo en la hierba

La esencia del tuning de SQL en 200 páginas

Compra ahora
(libro de bolsillo y/o PDF)

Contratar a Markus

La manera más rápida y fácil de beneficiarse de su extenso conocimiento y experiencia.
Aprende más »

Entrar en contacto con Markus

Suscríbete a listas de correoRSS FeedMarkus Winand en LinkedInMarkus Winand en XINGMarkus Winand en TwitterMarkus Winand en Bluesky
Copyright 2017-2025 Martin LE TARNEC, Markus Winand. All righs reserved.
Aspectos legales | Contacto | SIN GARANTÍA | Marcas | Privacidad y RGPD