A covering index contains all columns needed by a query, so the DB can answer it using only the index without fetching table rows. This reduces I/O and can be much faster, especially on large tables.