Reusing covering index for fields in FROM, from another query's index
The index IS covering for the second query. However, it is not USEFUL to support the seek. Because neither bar_id nor date_sent is leading the index, the optimiser cannot seek for it.

What you have achieved with the covering index is to make table scan faster for the second query. But you have not supported a better seek strategy.

This covering index would help both queries:

ALTER TABLE foo ADD INDEX (date_sent, user_id, bar_id)


Or if you prioritise the second query:

ALTER TABLE foo ADD INDEX (date_sent, bar_id, user_id)