A covering index contains all columns needed by a query, so the database can answer it using only the index (no table/heap lookup). It can significantly speed up reads, at the cost of larger indexes and slower writes.