没有 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
查询更快 运行 的区别
我正在我的 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
查询更快 运行 的区别