MySQL:对表

时间:2015-09-15 10:06:37

标签: mysql join view

我有一个视图,我组合了一些规范化的表。基于" master"表,我加入连接表(例如JOIN child ON master.child_fk = child.pk)。这很简单。现在,我想扩展此查询以在某些特殊情况下对所有子行执行连接,例如,如果master.child_fk等于-1

我设法通过创建一个视图来获得一个有效的查询,我复制所有行并将pk设置为重复项中的-1,但这非常慢(我有相当多的数据)。通过遍历所有child.pk并为每个EXPLAIN执行单独的连接,可以产生相同的结果,但我无法想象更快。

使用MySQL进行此操作的最佳方法是什么?如果不清楚,请提问。

编辑:我可以补充说,似乎我的尝试速度缓慢的原因是因为索引权限不佳。请参阅附件make allmodconfig make 输出https://i.imgur.com/8zfT0HM.png

1 个答案:

答案 0 :(得分:1)

将您的加入条件替换为JOIN child ON CASE WHEN master.child_fk != -1 THEN master.child_fk = child.pk ELSE 1 END)