mysql 5.7 子查询order by 问题

mysql5.7及以上 子查询里面最好不要用order by

官方解释:
在mysql5.7手册的8.2.2.1中有解释:

子查询的优化是使用半连接的策略完成的(The optimizer uses semi-join strategies to improve subquery execution)

使用半连接进行优化,子查询语句必须满足一些标准(In MySQL, a subquery must satisfy these criteria to be handled as a semi-join)。

其中一个标准是:必须不是一个包含了limit和order by的语句(It must not have ORDER BY with LIMIT.)

1.子查询如果同时存在order by和limit,不会忽略order by
此方法查询特别慢,具体原因不知道,最好把order by放在父查询
2.只存在order by 会忽略

你可能感兴趣的:(mysql)