Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zoptymalizuj wyszukiwanie pełnotekstowe w wielu tabelach

Jest to trudny problem, ponieważ CONTAINSTABLE może jednocześnie przeszukiwać tylko indeks FTS jednej tabeli. Powyższe rozwiązanie UNION jest w porządku, o ile wydajność jest akceptowalna.

Stanęliśmy przed tym samym problemem, polegającym na konieczności wydajnego przeszukiwania wielu kolumn z wielu tabel w jednym zapytaniu. To, co zrobiliśmy, to agregacja wszystkich danych z tych kolumn i tabel w jednej tabeli tylko do odczytu. Nasze zapytanie wymagało wtedy tylko jednego połączenia CONTAINSTABLE

 CONTAINSTABLE(AggregatedTable, AggregatedColumn, @FtsQuery)

Mamy zaplanowane zadanie, które jest uruchamiane co 5-10 minut i przyrostowo agreguje zmodyfikowaną zawartość z naszej tabeli źródłowej do naszej pojedynczej tabeli zagregowanej zawartości tylko do odczytu.

Ogólnie rzecz biorąc, wydaje się, że używanie FTS w dowolnej bazie danych o rozsądnych rozmiarach i obciążeniu użytkownikami oznacza, że ​​zawsze walczysz z wydajnością. Jeśli okaże się, że bez względu na to, co robisz, wydajność nie jest akceptowalna, być może będziesz musiał zbadać inne technologie, takie jakLucene .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przenieś dane SQL z jednej tabeli do drugiej

  2. Łączenie (konkatenowanie) daty i czasu w datetime

  3. Jak połączyć się z bazą danych z Unity?

  4. Zainstaluj SQL Server 2019 na komputerze Mac

  5. Zaimplementuj funkcję stronicowania (pomiń / weź) za pomocą tego zapytania