EXPLAIN
SELECT parent.fld, child.fld
FROM parent JOIN child ON child.id = parent.id
UNION ALL
SELECT parent.fld, child.fld
FROM parent JOIN child ON child.id = parent.otherid
AND parent.otherid <> parent.id
с таблицами с использованием механизма MyISAM:
id select_type TABLE TYPE possible_keys KEY key_len ref ROWS Extra
1 PRIMARY parent ALL PRIMARY 9999
1 PRIMARY child eq_ref PRIMARY PRIMARY 4 test.parent.id 1
2 UNION parent ALL parent_ix1 9999 USING WHERE
2 UNION child eq_ref PRIMARY PRIMARY 4 test.parent.otherid 1
UNION RESULT <union1,2> ALL
с таблицами с использованием механизма InnoDB:
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY child ALL PRIMARY 9903
1 PRIMARY parent eq_ref PRIMARY PRIMARY 4 test.child.id 1
2 UNION child ALL PRIMARY 9903
2 UNION parent ref parent_ix1 parent_ix1 5 test.child.id 1 Using where
UNION RESULT <union1,2> ALL