An index that became redundant and nobody removed

An index on (customer_id) alongside one on (customer_id, created_at), where the first is a prefix of the second and does nothing.

SELECT s.table_name, s.index_name,
       GROUP_CONCAT(s.column_name ORDER BY s.seq_in_index) AS cols
FROM information_schema.statistics s
WHERE s.table_schema = DATABASE()
GROUP BY s.table_name, s.index_name
ORDER BY s.table_name, cols;

-- read down the list: any index whose column list is a
-- prefix of another on the same table is redundant.
-- 7 of 84, totalling 4.2 GB.

Redundant indexes cost write throughput and buffer pool on every insert and are invisible in every query plan, because the query uses the wider one. Dropping them needs care in one direction only — a shorter index is smaller and may genuinely be preferred for a range scan — so the check was to drop them on a replica first and compare the plans for the top twenty queries.