Can someone recommend a good tutorial on MySQL indexes, specifically when used in an order by clause

Posted by Philip Brocoum on Stack Overflow See other posts from Stack Overflow or by Philip Brocoum
Published on 2010-04-05T20:05:01Z Indexed on 2010/04/05 20:13 UTC
Read the original article Hit count: 203

Filed under:
|
|
|
|

I could try to post and explain the exact query I'm trying to run, but I'm going by the old adage of, "give a man a fish and he'll eat for a day, teach a man to fish and he'll eat for the rest of his life." SQL optimization seems to be very query-specific, and even if you could solve this one particular query for me, I'm going to have to write many more queries in the future, and I'd like to be educated on how indexes work in general.

Still, here's a quick description of my current problem. I have a query that joins three tables and runs in 0.2 seconds flat. Awesome. I add an "order by" clause and it runs in 4 minutes and 30 seconds. Sucky. I denormalize one table so there is one fewer join, add indexes everywhere, and now the query runs in... 20 minutes. What the hell? Finally, I don't use a join at all, but rather a subquery with "where id in (...) order by" and now it runs in 1.5 seconds. Pretty decent. What in God's name is going on? I feel like if I actually understood what indexes were doing I could write some really good SQL.

Anybody know some good tutorials? Thanks!

© Stack Overflow or respective owner

Related posts about mysql

Related posts about join