mysql – ORDER BY NULL比ORDER BY列慢

根据
MySQL documentation,在GROUP BY之后添加ORDER BY NULL应该“避免排序结果的开销”.如果是这样,为什么跟随查询aprox慢5倍

SELECT COUNT(*) advert_count, category.name
FROM advert
LEFT JOIN category ON advert.category_id = category.category_id
WHERE (
advert.state_id = 2
)
GROUP BY advert.category_id
ORDER BY NULL
LIMIT 5 

使用ORDER BY advert_count查询?

SELECT COUNT(*) advert_count, category.name
FROM advert
LEFT JOIN category ON advert.category_id = category.category_id
WHERE (
advert.state_id = 2
)
GROUP BY advert.category_id
ORDER BY advert_count DESC
LIMIT 5 

来自phpMyAdmin的分析:
第一查询:

Sorting for group   -
Sorting result      0.000002
Sending data        12.069774

第二个查询:

Sorting for group   2.436986
Sorting result      0.000028
Sending data        0.000021

我很困惑,有人能解释我那里发生了什么吗?

最佳答案 ORDER BY NULL根本没有任何排序.每条记录都有相同的位置.

因此,第一个查询是选择数据中找到的前5个组.但第二个查询是计算数据中所有组的结果,并根据计数查找前5个.

这是由你展示的前两个开销产生的.

第三个开销是差异 – 发送数据.对于非数据库相关的原因,当您运行它时,传输数据需要很长时间.这可能是由于当时服务器或网络负载造成的.

点赞