MySQL explain Query understanding

MysqlQuery Optimization

Mysql Problem Overview


I've read on some blogs and in some articles related to optimization, how to optimize queries. I read I need to use indexes and make sure all my primary key and foreign keys are set correctly using a good relational database schema.

Now I have a query I need to optimize and I get this on the EXPLAIN:

Using where; Using temporary; Using filesort

I am using MySQL 5.5

I know I am using WHERE but not with my temporary table nor filesort? What does this mean?

Mysql Solutions


Solution 1 - Mysql

Using temporary means that MySQL need to use some temporary tables for storing intermediate data calculated when executing your query.

Using filesort is a sorting algorithm where MySQL isn't able to use an index for sorting and therefore can't do the complete sort in memory. Instead it breaks the sort into smaller chunks and then merge the results to get the final sorted data.

Please refer to http://dev.mysql.com/doc/refman/5.0/en/explain-output.html.

I think you might be using an ORDER BY plus some derived table or sub-query. It would be great if you could paste your query and relevant tables/indexes information and the EXPLAIN output.

Solution 2 - Mysql

Syntax:

Explain `MySQL Query`

Example: EXPLAIN SELECT * FROM categoriesG

Example: EXPLAIN EXTENDED SELECT City.Name FROM City JOIN Country ON (City.CountryCode = Country.Code) WHERE City.CountryCode = 'IND' AND Country.Continent = 'Asia'G

Explain followed with your mysql query

http://www.sitepoint.com/using-explain-to-write-better-mysql-queries/">Better explained in details here

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKenView Question on Stackoverflow
Solution 1 - MysqlAbhayView Answer on Stackoverflow
Solution 2 - MysqlAditya P BhattView Answer on Stackoverflow