Indexes are used to efficiently retrieve data from MySQL tables. The most common type is the B-Tree index, which allows quick retrieval of data by key and scanning in order. Indexes work by storing pointers to data rows, improving performance for queries that filter, join, group or sort by indexed columns. Good indexes are small, use minimal data types, and cover columns frequently queried, joined on or used for filtering, grouping and sorting.