没有 ORDER BY 的查询更慢?

Query without ORDER BY slower?

我正在我的 INNODB 数据库上执行以下操作


没有订单的查询

SELECT  SQL_NO_CACHE second_designer
    FROM  itemrow FORCE INDEX(second_designer)
    WHERE  category like '%'
      and  type like '%'
      and  availability like '%'
    GROUP BY  second_designer

259 results in 0.0286 seconds.


按描述排序查询

SELECT  SQL_NO_CACHE second_designer
    FROM  itemrow FORCE INDEX(second_designer)
    WHERE  category like '%'
      and  type like '%'
      and  availability like '%'
    GROUP BY  second_designer
    ORDER BY  second_designer DESC 

259 results in 0.0008 seconds.


索引

ADD INDEX `second_designer` (`second_designer ` , `availability`,
                             `category`, `type`) USING BTREE

解释

id select_type table   type  possible_keys   key         key_len ref  rows Extra
1  SIMPLE      itemrow index second_designer second_designer 608 NULL 44521 Using where; Using index


为什么带有 order by 子句的查询比不带子句的查询快得多?

差异是由 'hidden' LIMIT phpMyAdmin 添加到所有查询引起的。

$cfg['MaxRows'] Listed in phpMyAdmin Docs

明确设置 LIMIT 后,查询执行相同的操作(在 0.0286 秒内产生 259 个结果)。

当我们使用 order by 时,它使用索引对结果行进行排序。在没有按索引排序的查询中不使用。这就是使用 order by

查询更快 运行 的区别