MySQL解释查询理解

Ken*_*Ken 49 mysql query-optimization

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

现在我有一个我需要优化的查询,我得到了EXPLAIN:

Using where; Using temporary; Using filesort
Run Code Online (Sandbox Code Playgroud)

我正在使用MySQL 5.5

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

Abh*_*hay 37

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

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

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

我想你可能正在使用ORDER BY加上一些派生表或子查询.如果您可以粘贴查询和相关表/索引信息以及EXPLAIN输出,那就太棒了.


Adi*_*att 9

句法:

Explain `MySQL Query`
Run Code Online (Sandbox Code Playgroud)

例: 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查询

这里有更详细的解释