Precisei montar uma API para um autocomplete e a busca precisava ser em qualquer parte do texto:
select `pessoas`.* from `pessoas` where `nomeArtistico` like '%Claudinho%' order by `ultima_atualizacao` asc limit 200
Essa query tava demorando ~700ms para rodar.
Decidir usar o fulltext do MySQL:
Adicionei o index
ALTER TABLE pessoas ADD FULLTEXT(nomeArtistico)
E a query:
select `pessoas`.* from `pessoas` where MATCH(nomeArtistico) AGAINST('Claudinho') order by `ultima_atualizacao` asc limit 200
O tempo pra rodar caiu pra ~19ms
A forma como a busca é feita é diferente e os resultados também, mas para a regra de negócio da minha aplicação resolveu e com um tempo bem menor :)
Nesse artigo tem uma explicação mais detalhada:
https://www.devmedia.com.br/mysql-fulltext-search/14040
Top comments (0)