Para las declaraciones UPDATE, el optimizador puede usar el índice si considera que el índice puede acelerarlo. El índice se usaría para ubicar las filas que se actualizarán. El índice también es una tabla, por así decirlo, por lo que si la columna indexada se actualiza, obviamente también necesita ACTUALIZAR el índice. Por otro lado, si está ejecutando una actualización sin una cláusula WHERE, el optimizador puede optar por no usar un índice, ya que tiene que acceder a toda la tabla, una exploración completa de la tabla puede ser más eficiente (pero aún puede tener que actualizar el índice ). El optimizador toma esas decisiones en tiempo de ejecución en función de varios parámetros, como si hay estadísticas válidas contra las tablas y los índices en cuestión, cuántos datos se ven afectados, qué tipo de hardware, etc.
Para las declaraciones INSERT, aunque el INSERT en sí mismo no necesita el índice, el índice también deberá ser 'insertado en', por lo que Oracle deberá acceder a él. Otro caso en el que INSERT puede hacer que se use el índice es un INSERT como este:
INSERT INTO mytable (mycolmn)
SELECT mycolumn + 10 FROM mytable;