一尘不染

MySQL解释查询理解

mysql

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

现在,我有一个查询需要优化,并且可以在上获得此查询EXPLAIN

Using where; Using temporary; Using filesort

我正在使用MySQL 5.5

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


阅读 484

收藏
2020-05-17

共1个答案

一尘不染

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

使用文件排序是一种排序算法,其中MySQL无法使用索引进行排序,因此无法在内存中进行完整的排序。而是将排序分为较小的块,然后合并结果以获取最终的排序数据。

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

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

2020-05-17