「マテリアライズドビュー」を作成できます。
基本的には、JOINの結果であるテーブルであり、その上にフルテキストインデックスを作成します。
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)
その後、代わりにそのテーブルでクエリを実行できます。
SELECT * FROM materialized WHERE MATCH(user_name,department_name) AGAINST('test' IN BOOLEAN MODE)
しかし...
テーブルを定期的に(または基になるテーブルが更新するときに)更新する必要があります。最も簡単なのは、DROP
することです。 作成して再作成する-または、TRUNCATE
を使用できます 次に、INSERT INTO ... SELECT ... FROM ...
フォーマット。
(より複雑なスキームには、「ビュー」を更新したままにするトリガー、またはbinlogを監視し、「ビュー」に対して更新を再生するトリガーが含まれます)