Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Otimize a pesquisa de texto completo em várias tabelas


Esta é uma questão difícil, porque CONTAINSTABLE só pode pesquisar o índice FTS de uma única tabela por vez. Sua solução UNION acima está bem desde que seu desempenho seja aceitável.

Enfrentamos o mesmo problema de precisar pesquisar com eficiência muitas colunas de muitas tabelas em uma única consulta. O que fizemos foi agregar todos os dados dessas colunas e tabelas em uma única tabela somente leitura. Nossa consulta precisou apenas de uma única chamada CONTAINSTABLE
 CONTAINSTABLE(AggregatedTable, AggregatedColumn, @FtsQuery)

Temos um trabalho agendado que é executado a cada 5-10 minutos e agrega incrementalmente qualquer conteúdo modificado de nossa tabela de origem em nossa única tabela de conteúdo agregado somente leitura.

Em geral, parece que usar o FTS em qualquer banco de dados de tamanho razoável e carga de usuário significa que você está sempre lutando com o desempenho. Se você achar que não importa o que você faça, você não consegue obter um desempenho aceitável, talvez seja necessário investigar outras tecnologias, comoLucene .