MySQL:对表的所有行执行连接

MySQL:对表的所有行执行连接,mysql,join,view,Mysql,Join,View,我有一个视图,其中我合并了一些规范化的表。基于“主”表,我连接连接的表(例如,连接master.child上的child\u fk=child.pk)。这很直截了当。现在,我想扩展此查询,以便在某些特殊情况下对所有子行执行联接,例如,如果master.child\u fk等于-1 通过创建一个视图,我复制了所有行,并在副本中将pk设置为-1,我成功地获得了一个有效的查询,但是速度非常慢(我有很多数据)。通过迭代所有子.pk并对每个子.pk执行单独的连接,可以产生相同的结果,但我无法想象这样会更快

我有一个视图,其中我合并了一些规范化的表。基于“主”表,我连接连接的表(例如,
连接master.child上的child\u fk=child.pk
)。这很直截了当。现在,我想扩展此查询,以便在某些特殊情况下对所有子行执行联接,例如,如果
master.child\u fk
等于
-1

通过创建一个视图,我复制了所有行,并在副本中将pk设置为
-1
,我成功地获得了一个有效的查询,但是速度非常慢(我有很多数据)。通过迭代所有
子.pk
并对每个子.pk执行单独的连接,可以产生相同的结果,但我无法想象这样会更快

使用MySQL的最佳方式是什么?如果有不清楚的地方,请提问


编辑:我可以补充一点,我的尝试之所以缓慢,似乎是因为索引优化不好。请参阅随附的
解释
此处的输出

在master.child\u fk!=-1然后master.child\u fk=child.pk ELSE 1 END)

在master.child\u fk!=-1那么master.child\u fk=child.pk ELSE 1 END)你能粘贴你的查询吗?我爱你。它工作得很好:)我更新了它作为一个答案