Je zou een 'gematerialiseerde weergave' kunnen maken.http://en.wikipedia.org/wiki/Materialized_view
eigenlijk een tabel die de resultaten is van de JOIN, en daarop een volledige tekstindex maken.
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)
U kunt dan in plaats daarvan query's uitvoeren op die tabel.
SELECT * FROM materialized WHERE MATCH(user_name,department_name) AGAINST('test' IN BOOLEAN MODE)
maar...
U moet de tabel periodiek bijwerken (of wanneer de onderliggende tabellen worden bijgewerkt) - het gemakkelijkst is om gewoon DROP
en opnieuw maken - Of u kunt TRUNCATE
. gebruiken dan INSERT INTO ... SELECT ... FROM ...
formaat.
(Meer uitgebreide schema's omvatten triggers om de 'view' up-to-date te houden, of zelfs de binlog te bekijken, en updates opnieuw af te spelen tegen de 'view')