sql >> Databasteknik >  >> RDS >> Sqlserver

Optimera fulltextsökning över flera tabeller

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 .




  1. Mysql Databas design struktur

  2. UTF-8 teckenkodningsstrider json_encode()

  3. Hur hämtar jag alla rader i min DB?

  4. Åtgärda SQL-databasåterställning väntande problem med nekad åtkomst