为什么MySQL在没有ORDERBY的情况下使用filesort?

为什么MySQL在没有ORDERBY的情况下使用filesort?,mysql,optimization,Mysql,Optimization,全部, 我正在尝试解决一些性能问题,我已经分析了这个查询: 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

全部,

我正在尝试解决一些性能问题,我已经分析了这个查询:

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)
解释选择entry.entry\u键,entry.node,entry.object\u类型,entry.object\u id,
entry.copy\u id,entry.seq\u number,entry.root\u seq\u number,entry.first\u错误,
entry.last\u error,entry.error\u count,entry.error\u id,entry.error\u code,
entry.status、entry.type、entry.sense、entry.revied
从eventlog me加入eventlog\u条目eventlog\u条目
在eventlog\u条目上。eventlog\u key=me.eventlog\u key加入条目
ON entry.entry\u key=eventlog\u entries.entry\u key

其中(((first_error>='0'和last_errorMySQL将在您执行
分组时按
进行默认排序)。为避免这种情况,只需按NULL添加
顺序就可以了。出于兴趣,是否在某个地方记录了它?请在
选择
文档中找到它:如果使用GROUP BY,则输出行将按照GROUP BY列进行排序,就像对相同的列有ORDER BY一样。为避免按产品对GROUP BY排序的开销,请添加ORDER BY NULL