![](/img/trans.png)
[英]MySQL stuck on “using filesort” when doing an “order by”
[英]Why is MySQL using filesort when there is no ORDER BY?
所有,
我正在尝试解决一些性能问题,并且我已经分析了这个查询:
EXPLAIN SELECT entry.entry_key, entry.node, entry.object_type, entry.object_id,
entry.copy_id, entry.seq_number, entry.root_seq_number, entry.first_error,
entry.last_error, entry.error_count, entry.error_id, entry.error_code,
entry.status, entry.type, entry.sense, entry.reviewed
FROM eventlog me JOIN eventlog_entry eventlog_entries
ON eventlog_entries.eventlog_key = me.eventlog_key JOIN entry entry
ON entry.entry_key = eventlog_entries.entry_key
WHERE ( ( ( first_error >= '0' AND last_error <= '2147483640' ) AND
me.eventlog_key = '1' ) )
GROUP BY entry.entry_key\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: me
type: const
possible_keys: PRIMARY
key: PRIMARY
key_len: 8
ref: const
rows: 1
Extra: Using index; Using temporary; Using filesort
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: eventlog_entries
type: ref
possible_keys: eventlog_entry_idx_entry_key,eventlog_entry_idx_eventlog_key
key: eventlog_entry_idx_eventlog_key
key_len: 8
ref: const
rows: 1
Extra:
*************************** 3. row ***************************
id: 1
select_type: SIMPLE
table: entry
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 8
ref: eventlog.eventlog_entries.entry_key
rows: 1
Extra: Using where
3 rows in set (0.00 sec)
原始查询中确实有一个ORDER BY
,但是我删除了它。 但是, EXPLAIN
仍在报告文件排序,我不知道为什么。 MySQL优化器是否将优化缓存在某处? 还是出于其他某些原因使用了文件排序?
默认情况下,无论何时执行GROUP BY
MySQL都会进行排序。 为了避免这种情况,只需添加ORDER BY NULL
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.