Bạn có thể tạo 'chế độ xem cụ thể hóa'. http://en.wikipedia.org/wiki/Materialized_view
về cơ bản một bảng là kết quả của JOIN và tạo một chỉ mục văn bản đầy đủ trên đó.
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)
Sau đó, bạn có thể chạy các truy vấn trên bảng đó thay thế ..
SELECT * FROM materialized WHERE MATCH(user_name,department_name) AGAINST('test' IN BOOLEAN MODE)
nhưng ...
Bạn sẽ cần cập nhật bảng định kỳ (hoặc khi các bảng bên dưới cập nhật) - đơn giản nhất là chỉ cần DROP
và tạo lại - Hoặc bạn có thể sử dụng TRUNCATE
sau đó INSERT INTO ... SELECT ... FROM ...
định dạng.
(các kế hoạch phức tạp hơn liên quan đến các trình kích hoạt để giữ cho 'chế độ xem' được cập nhật, hoặc thậm chí xem binlog và phát lại các cập nhật đối với 'chế độ xem')