Optimization: only update columns, that really changed the value