UPDATE queries where the UPDATE is applied on the indexed field always read all records before starting to apply the updates. Some handlers can handle updates also of indexed fields. They should thus use the normal UPDATE loop instead. It should be enough to introduce a new table flag to handle this optimisation and use it in one place in the sql_update.cc file.
New table flag HA_CAN_SCAN_UPDATED_INDEX if this is set then used_key_is_modified is not used to execute filesort before applying the updates.