Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ottimizza la ricerca full-text su più tabelle

Questo è un problema difficile, perché CONTAINSTABLE può cercare solo l'indice FTS di una singola tabella alla volta. La tua soluzione UNION sopra va bene fintanto che le tue prestazioni sono accettabili.

Abbiamo affrontato lo stesso problema di dover cercare in modo efficiente molte colonne da molte tabelle in una singola query. Quello che abbiamo fatto è stato aggregare tutti i dati da queste colonne e tabelle in un'unica tabella di sola lettura. La nostra query richiedeva quindi solo una singola chiamata CONTAINSTABLE

 CONTAINSTABLE(AggregatedTable, AggregatedColumn, @FtsQuery)

Abbiamo un lavoro pianificato che viene eseguito ogni 5-10 minuti e aggrega in modo incrementale qualsiasi contenuto modificato dalla nostra tabella di origine nella nostra singola tabella dei contenuti aggregati di sola lettura.

In generale, sembra che l'utilizzo di FTS in qualsiasi database di dimensioni ragionevoli e carico utente significhi sempre lottare con le prestazioni. Se ritieni che, indipendentemente da quello che fai, non puoi ottenere prestazioni accettabili, potrebbe essere necessario esaminare altre tecnologie comeLucena .