When I do an explain on my query
I see that it has "Using temporary; Using filesort" under "Extra" for the first row. I understand this is bad but I don't know what exactly it means or how to fix it.
If you want to see my query, here's a more general question I asked about the same query: MySQL query optimization and EXPLAIN for a noob. For reference, the query involves 24 tables and 23 joins.
My questions now are:
- What do "Using temporary" and "Using filesort" mean?
- Assuming they're bad, how do I get rid of them?
As said already, "using filesort" and "using temporary" do not always imply bad performance.
Here are some basic guidelines for improving performance of ORDER BY statements. The highlights:
First try to use indices (make sure the fields you are sorting by have indices). Note that increasing the system variables sort_buffer_size and read_rnd_buffer_size can also have a negative effect on other queries - consider setting them specifically for the session you need them for and leave them at default for all other sessions.