MySQL解释查询理解

我读过一些博客和一些与优化相关的文章,如何优化查询。 我读我需要使用索引,并确保我所有的主键和外键使用良好的关系数据库架构正确设置。

现在我有一个查询,我需要优化,我得到这个解释:

 Using where; Using temporary; Using filesort 

我正在使用MySQL 5.5

我知道我正在使用WHERE但不是与我的临时表或文件? 这是什么意思?

使用临时表示MySQL需要使用一些临时表来存储执行查询时计算的中间数据。

使用filesort是一种sortingalgorithm,其中MySQL无法使用索引进行sorting,因此无法在内存中进行完整sorting。 相反,它将这种sorting分成更小的块,然后合并结果以获得最终的sorting数据。

请参考http://dev.mysql.com/doc/refman/5.0/en/explain-output.html

我想你可能会使用ORDER BY加上一些派生表或子查询。 如果你能粘贴你的查询和相关的表/索引信息和EXPLAIN输出,那将是非常好的。

句法:

 Explain `MySQL Query` 

示例: EXPLAIN SELECT * FROM categoriesG

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

解释你的mysql查询

这里详细解释一下