Detta är en svår fråga, eftersom CONTAINSTABLE bara kan söka i en enskild tabells FTS-index åt gången. Din UNION-lösning ovan är bra så länge din prestation är acceptabel.
Vi stod inför samma problem med att effektivt behöva söka i många kolumner från många tabeller i en enda fråga. Det vi gjorde var att samla all data från dessa kolumner och tabeller till en enda skrivskyddad tabell. Vår fråga behövde då bara ett enda CONTAINSTABLE-anrop
CONTAINSTABLE(AggregatedTable, AggregatedColumn, @FtsQuery)
Vi har ett schemalagt jobb som körs var 5-10:e minut och stegvis aggregerar allt modifierat innehåll från vår källtabell till vår enda skrivskyddade aggregerade innehållstabell.
Generellt verkar det som att använda FTS i vilken databas och användarbelastning som helst av rimlig storlek innebär att du alltid kämpar med prestanda. Om du upptäcker att du, oavsett vad du gör, inte kan få prestandan att vara acceptabel, kan du behöva undersöka andra tekniker såsomLucene .