Before you start

You created an index and the query is still slow. Run EXPLAIN on it first. If the key column is NULL, or names a different index than you expected, MySQL decided not to use yours. The causes below are the ones that come up most. See Read a MySQL EXPLAIN plan for the columns.
The usual causes
Test it, do not force it
FORCE INDEX tells MySQL to use a specific index. It is useful as an experiment: if the forced query is much faster, you know the index is right and the cause is one of the above.
EXPLAIN SELECT id, total
FROM orders FORCE INDEX (idx_orders_customer_created)
WHERE customer_id = 42 ORDER BY created_at DESC LIMIT 20;Do not leave it in the application. A forced index choice goes on being forced after the data changes and a different index would be better.
Next step
Paste the query and its EXPLAIN output into dbtempo to see which of these causes it finds. To build or drop indexes, see Create, show and drop indexes in MySQL.