An index lookup finds the primary key and then reads the row from the clustered index to get the other columns, which is a second read per row — unless everything the query needs is already in the index.
-- reads the row for total
CREATE INDEX idx_a ON orders (customer_id, placed_at);
SELECT placed_at, total FROM orders WHERE customer_id = 12;
-- reads nothing beyond the index
CREATE INDEX idx_b ON orders (customer_id, placed_at, total);
-- EXPLAIN: Using index
Using index in the Extra column is the confirmation, and it is worth checking rather than assuming. The trade is width: every extra column makes the index larger, slower to maintain and more expensive to keep in the buffer pool, so this pays for a query that runs constantly and not for one that runs nightly. Adding a column purely to cover a query is a decision to document, because the next person will see an index with an odd trailing column and want to trim it.