MySQL performance is largely defined by keys and how efficiently
queries can use them. As you scale, at certain point it isn’t
enough anymore to just have any indexes and still get a
good performance in return. You have to really figure them out
and allow your queries to do less work, as little work as
possible.
The approach presented in this article can sometimes help
designing such good, efficient indexes. As a consultant, I have
to rely on it myself from time to time, having to optimize a
query that works in a database I know nothing about.
Let’s assume there is an application, which collects user
activity in various places. The application uses a poorly indexed
database, so there are plenty of examples to choose from. Our
example query performs a full table scan, which means it reads
all rows from the table it uses. It is also among the most
popular statements executed by application.
mysql> EXPLAIN …
[Read more]