Đây là một vấn đề khó, vì CONTAINSTABLE chỉ có thể tìm kiếm chỉ mục FTS của một bảng tại một thời điểm. Giải pháp UNION của bạn ở trên là tốt miễn là hiệu suất của bạn ở mức chấp nhận được.
Chúng tôi phải đối mặt với cùng một vấn đề là cần tìm kiếm hiệu quả nhiều cột từ nhiều bảng trong một truy vấn duy nhất. Những gì chúng tôi đã làm là tổng hợp tất cả dữ liệu từ các cột và bảng này thành một bảng chỉ đọc duy nhất. Khi đó, truy vấn của chúng tôi chỉ cần một lệnh gọi CONTAINSTABLE
CONTAINSTABLE(AggregatedTable, AggregatedColumn, @FtsQuery)
Chúng tôi có một công việc được lên lịch thực hiện cứ sau 5-10 phút và dần dần tổng hợp mọi nội dung đã sửa đổi từ bảng nguồn của chúng tôi vào một bảng nội dung tổng hợp chỉ đọc duy nhất của chúng tôi.
Nói chung, có vẻ như việc sử dụng FTS trong bất kỳ cơ sở dữ liệu có kích thước hợp lý nào và tải của người dùng có nghĩa là bạn luôn phải chiến đấu với hiệu suất. Nếu bạn thấy rằng bất kể bạn làm gì, bạn không thể làm cho hiệu suất ở mức chấp nhận được, bạn có thể cần phải điều tra các công nghệ khác, chẳng hạn như Lucene .