问题:mysql5.7子查询order by失效
原因:在mysql5.7中,如果不加limit,系统会把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.)
本文探讨了MySQL5.7中子查询OrderBy在特定条件下被优化掉的问题,这是由于半连接策略的应用导致。文章指出,在子查询中同时使用OrderBy和Limit时,系统为了提高执行效率可能会忽略OrderBy指令。
186

被折叠的 条评论
为什么被折叠?



