Můžete vytvořit 'materializované zobrazení'.http://en.wikipedia.org/wiki/Materialized_view
v podstatě tabulka, která je výsledkem JOIN, a na té se vytvoří fulltextový index.
CREATE TABLE materialized (FULLTEXT idx (user_name,department_name))
SELECT u.id,user_name,department_name
FROM users u INNER JOIN departments d ON (d.id = dept_id)
Potom můžete místo toho spouštět dotazy na tuto tabulku..
SELECT * FROM materialized WHERE MATCH(user_name,department_name) AGAINST('test' IN BOOLEAN MODE)
ale...
Tabulku budete muset pravidelně aktualizovat (nebo když se aktualizují základní tabulky) - nejjednodušší je prostě DROP
a znovu vytvořit - Nebo můžete použít TRUNCATE
pak INSERT INTO ... SELECT ... FROM ...
formát.
(Propracovanější schémata zahrnují spouštěče, které udržují 'view' aktualizované, nebo dokonce sledují binlog a přehrávají aktualizace proti 'view')