MySQL FULLTEXT Buscar en> 1 tabla

Como un caso más general deesta pregunt porque creo que puede ser de interés para más personas ... ¿Cuál es la mejor manera de realizar una búsqueda de texto completo en dos tablas? Suponga que hay tres tablas, una para programas (con submitter_id) y una para etiquetas y descripciones con object_id: claves foráneas que se refieren a registros en programas. Queremos el submitter_id de los programas con cierto texto en sus etiquetas O descripciones. Tenemos que usar MATCH CONTRA por razones por las que no entraré aquí. No te obsesiones con ese aspecto.

programs
  id
  submitter_id
tags_programs
  object_id
  text
descriptions_programs
  object_id
  text

Lo siguiente funciona y se ejecuta en unos 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'))

pero intenté reescribir esto como JOIN de la siguiente manera y se ejecuta durante mucho tiempo. Tengo que matarlo después 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'))

Solo por curiosidad, reemplacé el OR con AND. Eso también se ejecuta en unos pocos milisegundos, pero no es lo que necesito. ¿Qué hay de malo con la segunda consulta anterior? Puedo vivir con UNION y subselecciones, pero me gustaría entender.

Respuestas a la pregunta(4)

Su respuesta a la pregunta