MySQL优化器将首先确定连接顺序/方法,然后检查对于所选择的连接顺序是否可以避免通过使用索引进行排序。对于此问题中的慢查询,优化器已决定使用“块嵌套循环”(BNL)连接。
当其中一个表很小(并且没有LIMIT)时,BNL通常比使用索引更快。
但是,对于BNL,行不一定按第一个表给出的顺序排列。因此,连接的结果需要在应用LIMIT之前进行排序。
您可以通过以下方式关闭BNL
set optimizer_switch = 'block_nested_loop=off';
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)