是否对LIMIT的MySQL JOIN内部进行了优化?
作者:互联网
一个表社区,其ID:int,名称:varchar.另一个表category_people为community_id:int,person_id:int.带有LIMIT查询的JOIN可能是
SELECT b.user_id, group_concat(a.name SEPARATOR ',') as groups FROM communities a JOIN communities_users b ON a.id = b.community_id GROUP BY b.user_id LIMIT 1000 OFFSET 2000;
在此查询中,MySQL将执行任何内部优化,并且(a)先执行limit,offset部分然后再进行联接,或者(b)在全表上执行联接,然后获取limit,offset窗口吗?
解决方法:
参照MySQL 5.6手册LIMIT Optimization,它看起来像是(a):
“ MySQL一旦向客户端发送了所需的行数,它将立即中止查询,除非您正在使用SQL_CALC_FOUND_ROWS.”
标签:join,query-optimization,mysql 来源: https://codeday.me/bug/20191201/2082464.html