Em bancos de dados, os índices geralmente são usados para melhorar o desempenho ao procurar algo definido em sua cláusula where. No entanto, quando se trata de filtrar algum texto, por exemplo, usando algo como
WHERE TextColumn LIKE '%searchstring%'
então as pesquisas são lentas, porque a forma como os índices de banco de dados regulares funcionam são otimizados para correspondências com o 'conteúdo inteiro' de uma coluna e não apenas uma parte dela. Em específico a pesquisa LIKE que inclui curingas não pode fazer uso de nenhum tipo de índice. Como mencionado no comentário abaixo, o MySQL precisa do
MATCH () ... AGAINST
sintaxe para pesquisar em um índice de texto completo; BTW, isso varia dependendo do fornecedor do banco de dados. No MS SQL você pode usar CONTAINS
portanto, lembre-se disso quando planejar oferecer suporte a outros bancos de dados também. Índices de texto completo funcionam melhor para texto normal, pois são otimizados para esse tipo de coluna. Muito simplificado:Eles dividem o texto em palavras e fazem um índice sobre as palavras e não todo o texto. Isso funciona muito mais rápido para pesquisas de texto ao procurar palavras específicas.