Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Optimieren Sie die Volltextsuche über mehrere Tabellen hinweg

Dies ist ein schwieriges Problem, da CONTAINSTABLE jeweils nur den FTS-Index einer einzelnen Tabelle durchsuchen kann. Ihre obige UNION-Lösung ist in Ordnung, solange Ihre Leistung akzeptabel ist.

Wir standen vor dem gleichen Problem, viele Spalten aus vielen Tabellen in einer einzigen Abfrage effizient durchsuchen zu müssen. Wir haben alle Daten aus diesen Spalten und Tabellen in einer einzigen schreibgeschützten Tabelle zusammengefasst. Unsere Abfrage benötigte dann nur einen einzigen CONTAINSTABLE-Aufruf

 CONTAINSTABLE(AggregatedTable, AggregatedColumn, @FtsQuery)

Wir haben einen geplanten Job, der alle 5–10 Minuten ausgeführt wird und alle geänderten Inhalte aus unserer Quelltabelle inkrementell in unsere einzige schreibgeschützte aggregierte Inhaltstabelle aggregiert.

Im Allgemeinen scheint die Verwendung von FTS in Datenbanken und Benutzerlasten mit angemessener Größe zu bedeuten, dass Sie immer mit der Leistung kämpfen. Wenn Sie feststellen, dass die Leistung unabhängig von Ihrer Vorgehensweise nicht akzeptabel ist, müssen Sie möglicherweise andere Technologien wie Lucene .