我在一些博客和一些与优化相关的文章中读到了如何优化查询.我读到我需要使用索引,并确保使用良好的关系数据库模式正确设置所有主键和外键.
现在我有一个需要优化的查询,我在EXPLAIN
上得到:
Using where; Using temporary; Using filesort
我使用的是MySQL 5.5
我知道我使用的是WHERE
,但不是我的临时表或文件排序?这是什么意思?
我在一些博客和一些与优化相关的文章中读到了如何优化查询.我读到我需要使用索引,并确保使用良好的关系数据库模式正确设置所有主键和外键.
现在我有一个需要优化的查询,我在EXPLAIN
上得到:
Using where; Using temporary; Using filesort
我使用的是MySQL 5.5
我知道我使用的是WHERE
,但不是我的临时表或文件排序?这是什么意思?
使用临时表意味着MySQL需要使用一些临时表来存储执行查询时计算的中间数据.
使用filesort是一种排序算法,MySQL无法使用索引进行排序,因此无法在内存中完成完整的排序.相反,它将排序分成更小的块,然后合并结果以获得最终的排序数据.
请参考http://dev.mysql.com/doc/refman/5.0/en/explain-output.html.
我认为您可能正在使用ORDER BY加上一些派生表或子查询.如果您可以粘贴查询和相关表/索引信息以及解释输出,那就太好了.