在 MySQL 中使用文件排序意味着什么?
what does Using filesort mean in MySQL?
我想知道 MySQL 中的 Using filesort 是什么意思?
explain select * from user order by user_id;
我用'order by'的时候出现了。
1,SIMPLE,orderitems,,ALL,,,,,1,100,Using filesort
'Using filesort'是额外的。
谢谢大家!
这实际上在 MySQL 文档中:
https://dev.mysql.com/doc/refman/8.0/en/explain-output.html#explain-extra-information
Using filesort (JSON property: using_filesort)
MySQL must do an extra pass to find out how to retrieve the rows in
sorted order. The sort is done by going through all rows according to
the join type and storing the sort key and pointer to the row for all
rows that match the WHERE clause. The keys then are sorted and the
rows are retrieved in sorted order. See Section 8.2.1.16, “ORDER BY
Optimization”.
当您没有看到“使用文件排序”时,这意味着您为查询结果请求的顺序与读取数据的自然顺序相匹配,所以有不需要额外的工作来对结果进行排序。
查询 InnoDB 表(默认存储引擎)时,MySQL 查询总是按照 EXPLAIN 报告的索引顺序读取行。如果它读取行的顺序与查询请求的顺序相匹配,则查询在读取它们时只需 returns 行。如果读取行的顺序与您请求的顺序不同,则查询必须在返回结果之前对结果进行排序。
我想知道 MySQL 中的 Using filesort 是什么意思?
explain select * from user order by user_id;
我用'order by'的时候出现了。
1,SIMPLE,orderitems,,ALL,,,,,1,100,Using filesort
'Using filesort'是额外的。 谢谢大家!
这实际上在 MySQL 文档中:
https://dev.mysql.com/doc/refman/8.0/en/explain-output.html#explain-extra-information
Using filesort (JSON property: using_filesort)
MySQL must do an extra pass to find out how to retrieve the rows in sorted order. The sort is done by going through all rows according to the join type and storing the sort key and pointer to the row for all rows that match the WHERE clause. The keys then are sorted and the rows are retrieved in sorted order. See Section 8.2.1.16, “ORDER BY Optimization”.
当您没有看到“使用文件排序”时,这意味着您为查询结果请求的顺序与读取数据的自然顺序相匹配,所以有不需要额外的工作来对结果进行排序。
查询 InnoDB 表(默认存储引擎)时,MySQL 查询总是按照 EXPLAIN 报告的索引顺序读取行。如果它读取行的顺序与查询请求的顺序相匹配,则查询在读取它们时只需 returns 行。如果读取行的顺序与您请求的顺序不同,则查询必须在返回结果之前对结果进行排序。