MySQL appears to be not using indexes and is using filesort on the following query:
SELECT `tweets`.*
FROM `tweets`
WHERE (`tweets`.contest_id = 159)
ORDER BY tweet_id ASC, tweeted_at DESC LIMIT 100 OFFSET 0
I have indexes on contest_id, tweet_id and tweeted_at
When I execute EXPLAIN EXTENDED, Extra returns “Using where; using filesort”. How can I improve my query?
When you mix
ASCandDESCsorting, MySQL cannot use indexes to optimize theGROUP BYstatement.Also, using multiple keys to sort will result in it not being able to optimize the query with indexes.
From the docs:
http://dev.mysql.com/doc/refman/5.6/en/order-by-optimization.html
If the two columns you are ordering on are not part of the same key, then you are doing both of the above things.