MySQL含左连接与过滤的查询执行计划差异疑问
关于MySQL左连接执行计划的疑问
我编写了一条SQL查询,用于获取所有电影信息,若某部电影有Brad Pitt参演,则显示其姓名。查询语句如下:
select m.title, p_cast.person_name From movie m left join ( movie_cast m_cast join person p_cast on m_cast.person_id = p_cast.person_id and p_cast.person_name = 'Brad Pitt' ) on m.movie_id = m_cast.movie_id
我预期MySQL Workbench的执行计划会显示数据库将movie表与movie_cast和person表的连接结果进行左连接,但实际计划显示的执行顺序不同:似乎先将movie与movie_cast连接,之后再与person连接并应用Brad Pitt的过滤条件。
若对执行计划的解读准确,我想了解左连接实际是在哪里实现的;若按该执行顺序,我原本预期会保留含其他演员的行,但实际并非如此。
请问该执行计划是否真实反映了数据库内部的执行流程(若属实,如何理解该执行流程),还是存在显示或解读错误?
内容的提问来源于stack exchange,提问作者Sérgio Mergen
相关产品推荐
相关产品推荐

