Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tối ưu hóa tìm kiếm toàn văn bản trên nhiều bảng

Đâ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 .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách khắc phục “Câu lệnh EXECUTE không thành công vì mệnh đề WITH RESULT SETS của nó đã chỉ định 1 (các) tập kết quả…” trong SQL Server

  2. Truy vấn máy chủ được liên kết động

  3. Cái nhìn đầu tiên về Công cụ ước tính bản số của máy chủ SQL mới

  4. Thứ tự loại dữ liệu trong SQL Server

  5. Nhập XML SQL:XQuery [value ()]:) được mong đợi