esquisa @MySQL FULLTEXT em> 1 tabela

Como um caso mais geral deessa questã porque acho que pode ser do interesse de mais pessoas ... Qual é a melhor maneira de realizar uma pesquisa de texto completo em duas tabelas? Suponha que haja três tabelas, uma para programas (com submitter_id) e uma para tags e descrições com object_id: chaves estrangeiras referentes a registros em programas. Queremos o submitter_id dos programas com determinado texto em suas tags OU descrições. Temos que usar o MATCH CONTRA por razões que não abordarei aqui. Não se preocupe com esse aspecto.

programs
  id
  submitter_id
tags_programs
  object_id
  text
descriptions_programs
  object_id
  text

O seguinte funciona e é executado em aproximadamente 20 ms:

SELECT p.submitter_id
FROM programs p
WHERE p.id IN
    (SELECT t.object_id
    FROM titles_programs t
    WHERE MATCH (t.text) AGAINST ('china')
UNION ALL
    SELECT d.object_id
    FROM descriptions_programs d
    WHERE MATCH (d.text) AGAINST ('china'))

mas tentei reescrever isso como um JOIN da seguinte maneira e ele é executado por um tempo muito longo. Eu tenho que matá-lo depois de 60 segundos.

SELECT p.id 
FROM descriptions_programs d, tags_programs t, programs p
WHERE (d.object_id=p.id AND MATCH (d.text) AGAINST ('china'))
OR    (t.object_id=p.id AND MATCH (t.text) AGAINST ('china'))

Apenas por curiosidade, substituí o OR por AND. Isso também ocorre em alguns milissegundos, mas não é o que eu preciso. O que há de errado com a segunda consulta acima? Eu posso viver com a UNION e subselecionar, mas eu gostaria de entender.

questionAnswers(4)

yourAnswerToTheQuestion