Indexes in SQL are created on existing tables to retrieve rows quickly when there are thousands of records. Indexes are created on columns that are frequently accessed so information can be retrieved more efficiently. There are two types of indexes: implicit indexes are created when a primary or unique key constraint is defined, while explicit indexes are created using the CREATE INDEX syntax specifying the table and column(s) to index.