Usando um índice no MySQL JOIN com OR condition

Estou executando uma consulta que se parece com isso

SELECT parent.field, child.field
FROM parent
JOIN child ON (child.id = parent.id 
    OR child.id = parent.otherid)

Isto é no entanto muito lento (cerca de 100k registros, e JOINs para outras tabelas na versão real), mas apesar de ter tentado índices em

parent.id (PRIMARY),  
parent.otherid,  
child.id (PRIMARY), 
and a composite index of parent.id and parent.otherid

Não consigo fazer com que o MySQL use nenhum desses índices ao fazer essa junção.

Eu li que o MySQL pode usar apenas um índice por junção, mas não consegue encontrar em qualquer lugar se ele pode usar um índice composto quando um JOIN contém uma condição OR.

Alguém aqui sabe se é possível fazer essa consulta referenciar um índice? Se sim, como?

MINHA SOLUÇÃO

(Então não vou me deixar responder a minha própria pergunta abaixo atm)

Um monte de ajustes e surgiu com uma solução bastante decente, que mantém a capacidade de juntar e agregar outras tabelas.

SELECT parent.field, child.field
FROM parent
JOIN (
    SELECT parent.id as parentid, 
    # Prevents the need to union
    IF(NOT ISNULL(parent.otherid) AND parent.otherid <> parent.id, 
       parent.otherid, 
       parent.id) as getdataforid
    FROM parent
    WHERE (condition)
) as foundrecords
    ON foundrecords.parentid = parent.id
JOIN child ON child.id = parent.getdataforid

Para velocidade, é necessária uma condição dentro da subconsulta para reduzir o número de registros colocados em uma tabela temporária, mas tenho toneladas de junções adicionais na consulta externa, algumas unindo-se ao filho e algumas ao pai (com alguns agregados). funcionou melhor para mim.

Em muitos casos, um sindicato será mais rápido e mais eficaz, mas como estou filtrando os pais, mas quero dados adicionais de filho (auto referências), o sindicato causou linhas extras para mim que não consegui consolidar. É possível que o mesmo resultado possa ser encontrado apenas unindo o pai a si mesmo e aliasando uma condição where na consulta externa, mas essa funciona muito bem para mim.

Graças a Jirka pela sugestão UNION ALL, foi o que me levou a chegar aqui :)

questionAnswers(2)

yourAnswerToTheQuestion